The only goal came two minutes before half-time when Edinson Cavani’s superbly floated cross allowed the Ajax striker to head in at Mexico’s back post.
With hosts South Africa unable to alter the goal difference too much in their 2-1 win over France, the result in Rustenburg also put the nervous Mexicans through. Tabarez said he was “bothered” by talk before the game that the two teams might play for a draw.
“It’s an insult to the coaches and players. Both teams came out looking for something,” Tabarez said.
“We knew we had two results that benefited us,” added Luis Suarez, who scored the only goal. “But before the match our goal was to get the three points and be group leaders.”
“The important thing is that we qualified in first place,” Uruguay striker Diego Forlan said. “They controlled the ball well and in truth it was quite hard for us.”
Mexico midfielder Rafael Marquez said the outcome left “a bitter taste”.
“We’re all unhappy with this result and with today’s performance. We’ll have to improve now.”
Their coach Javier Aguirre made two changes to his line-up, bringing in veteran Cuauhtemoc Blanco for his first start in place of the injured Carlos Vela up front, while Andres Guardado was in for the suspended Efrain Juarez.
Uruguay also made one surprise change, with Diego Godin dropping to bench in place of Mauricio Victorino.
Midway through the half, Guardado almost stunned Oscar Tabarez’s side with a wicked 30-yard effort that beat Fernando Muslera, but not the underside of the crossbar.
At the other end, Oscar Perez punched weakly at a Forlan cross, but there was no one following up at the back post.
The chances seemed to dry up 15 minutes before the break, but then Suarez broke the deadlock. Aguirre decided to make a change at the break, bringing on Pablo Barrera for Guardado.
And his side had the first chance of the half courtesy of a Blanco free-kick 25-yards out that was curled into the arms of Muslera.
Uruguay then almost doubled the advantage when Forlan swung over a free-kick from the right, but Diego Lugano’s powerful header drew an excellent low save from Perez.
The Mexicans again had their goalkeeper Perez to thank in the 87th minute when he parried away and awkward 30-yard Cavani strike for a corner.
It proved the last chance for either side as La Celeste held on.
MEXICO: Perez, Osorio, Rodriguez, Moreno (Castro 57), Salcido, Torrado, Marquez, Guardado (Barrera 46), Giovani, Blanco (Hernandez 63), Franco.
URUGUAY: Muslera, Maxi Pereira, Lugano, Victorino, Fucile, Arevalo Rios, Perez, Pereira (Scotti 76), Forlan, Suarez (Alvaro Fernandez 85), Cavani.
Referee: Viktor Kassai (Hungary).