Only AB de Villiers provided any resistance at SuperSport Park with a defiant 91 that helped South Africa narrowly avoid the follow-on as Australia took a 191-run first innings lead.
The home side's hopes of fighting their way back into the match were lifted by the early second innings wicket of opener Chris Rogers as Australia went to lunch on 18 for one following a 30-minute spell of hostile bowling before the break.
Rogers was bowled by Dale Steyn's first delivery of the innings, playing on off the bottom edge of his bat, but it was Australia's spearhead Johnson who continued to mine the rich vein of form he has enjoyed since the recent Ashes series.
South Africa started the third day on 140-6 in their first innings, still 257 runs adrift with four wickets standings and needing 58 runs to avoid the follow-on.
Robin Peterson departed after just 10 balls had been bowled, gloving a bouncing ball from Johnson straight up into the air that allowed Australia skipper Michael Clarke to pouch a routine catch.
De Villiers and Vernon Philander then compiled a 49-run partnership before the latter was adjudged leg before wicket to Nathan Lyon after the Australians had asked for a review of the initial not-out decision.
Some lusty blows from De Villiers ensured the follow-on target was passed but South Africa's hopes of batting on to lunch ended as he was caught nine runs short of a century trying to blast a slower ball from Johnson back over the bowler's head. He was snatched by David Warner at mid-off.
South Africa take the top ranking in test cricket into the three-match series against a high-flying Australian side, who arrived fresh from a 5-0 whitewash of England.


Latest News from Sports News Desk