The Barcelona striker took his international tally to 30 goals in 47 games after scoring either side of halftime and bringing up the hat trick in stoppage time. Chelsea playmaker Oscar opened the scoring in the 10th minute and Manchester City midfielder Fernandinho struck in the 79th.
The trio all impressed in front of 51,000 spectators at Soccer City — as did Hulk and Paulinho — leaving Brazil coach Luiz Felipe Scolari with plenty to ponder ahead of his squad announcement on May 7.
Toronto FC goalkeeper Julio Cesar got the shutout for Brazil.
"For us it was a very important game and not just a friendly," said Brazil technical director Carlos Alberto Parreira. "We needed to ... set the scene and give a good inspiration ahead of the World Cup."
The five-time world champions made a patient start, with a half-chance falling to Fred at the near post after seven minutes.
The Fluminense striker, recalled after recent muscle injuries, shot well wide after being played in by Hulk, signalling an early warning to the hosts.
But Bafana Bafana failed to respond to that warning and fell behind moments later when a late Oscar run from deep in midfield saw the Chelsea player catch the two centre backs by surprise by neatly lifting Hulk's pass over helpless goalkeeper Ronwen Williams.
Williams did excellently to twice prevent Neymar from doubling the advantage in the 21st and 29th minutes. But there was no denying the 22-year-old striker before the break, and after Paulinho won the ball in midfield, Neymar drilled in a low left-foot finish from just inside the box.
Wolfsburg midfielder Luis Gustavo, along with Chelsea pair Willian and Ramires, were introduced at the interval at the expense of Paulinho, Hulk and Oscar. Another introduction was that of a changed all-blue strip by Brazil for the second half.
The changes had little effect on the tempo as Neymar made it 3-0 within 24 seconds of the restart with a delightful chip from just outside the box.
An energetic looking Willian fired inches wide of the far post with one of his early touches as Scolari's men appeared to momentarily shift gears.
Dani Alves and Jo were introduced for Marcelo and the ineffective Fred either side of the hour mark, before South Africa finally tested Cesar 63 minutes into the contest when the veteran 'keeper reacted sharply to save a close-range first time by substitute Ayanda Patosi.
Those changes by the Selecao, along with Dante coming in for David Luiz appeared to disrupt the Brazilian flow, although Alves was denied a fourth by a brilliant save from Williams.
Fernandinho then stunned South Africa when he fired into the left corner from 25-yards (meters) out. Victory was rounded off when a cross from the left evaded everyone to the back post where it was headed down by Jo for Neymar to crash in.
"The result was a little flattering because Bafana Bafana wasn't that bad," former South Africa coach Parreira said. "The result was because we had a few players that can make a huge difference, like Neymar and Oscar. The game was fairly balanced and we didn't play that much better than them."Suggest a correction