Diego Forlan’s 24th-minute strike and then a 80th minute penalty from Forlan along with a last-minute header from Alvaro Pereira left Uruguay in a strong position on four points from two games while South Africa have just a point.
Group A rivals France and Mexico, who both drew their opening games face each other on Thursday in Polokwane.
Uruguay began with some urgency, moving the ball well through midfield and they grabbed the lead in the 24th minute through a slightly deflected, dipping drive from Forlan which crashed in off the underside of the bar.
The goal woke the home side up and with Steven Pienaar influential they began to finally get a grip in midfield but with Katlego Mphela frequently left alone as a striker they lacked attacking options.
Midfielder Kagisho Dikgacoi was cautioned two minutes before the interval meaning that he will miss the final group game but Brazilian coach Carlos Alberto Parriera was left with plenty of questions to answer at the break.
But there was little change to the pattern of the game with Uruguay in control for large stretches and South Africa lacking potency and options in attack.
Luis Suarez had shout for a penalty turned down after he tumbled under challenge fromo Bongani Khumalo and Diego Lugano missed a good chance for Oscar Tavarez’s Uruguay side.
South Africa keeper Itumeleng Khune was sent off after he was adjudged to have brought down Suarez and Forlan drove home confidently.
Pereira completed the scoring with a header from a good cross from the right.