Bruno Fernandes scored twice as Portugal took revenge for their World Cup exit to Uruguay in 2018 with a 2-0 win in the Lusail Stadium.
The midfielder opened the scoring in the 54th minute with a cross that evaded everyone to end in the Uruguay net, while his second was an injury time penalty given for a handball.
The result books Portugal's place in the last 16, while Uruguay will have to beat Ghana and hope that South Korea don't defeat a Portugal side that can now rest players.
After Cristiano Ronaldo chested down for William Carvalho to fire over, Uruguay made their rugged style clear with Rodrigo Bentancur seeing a yellow card for catching Ruben Dias with his studs in just the sixth minute.
Although Diego Godin headed over from a corner for Uruguay, Portugal controlled the ball and camped closer and closer to the Uruguay area as the half progressed.
Joao Felix had a shot deflected over and Ronaldo saw a free kick blocked as Fernandes found space to work in midfield.
Despite Portugal's pressure, Bentancur had the best chance of the half, weaving his way through to Portuguese midfield and defense, only to see Diogo Costa block as he looked to slip the ball through the keeper's legs.
That chance helped even the play up and Portugal then lost left back Nuno Mendes, who had been a doubt beforehand, with a muscle injury. He was replaced by Raphael Guerreiro, whose first act was to send a cross just wide of Ronaldo at the far post.
For all of their possession, Portugal didn't force a save from Uruguay keeper Sergio Rochet in the first half.
The second half was briefly interrupted by a pitch invader before Portugal took the lead in the 54th minute with Fernandes for the leaping Ronaldo evading everyone, fooling Rochet and ending in the corner of the net.
Maxi Gomez and Luis Suarez replaced the disappointing Edinson Cavani and Darwin Nunez, and Gomez was unlucky to see a curling shot bounce back off the post.
Suddenly Uruguay were starting to play as Suarez fired just wide from a tight angle, Giorgian de Arrascaeta was denied by Costa, and Suarez was inches away from getting on a cross from the right.
Portugal got a penalty in the last minute after the VAR spotted Jose Maria Gimenez's handball in the area, and Fernandes produced a calm finish, before seeing another effort bounce back off the woodwork in injury time.