Johnson took four for 51 as South Africa crashed to 140 for six at the close of play, still 257 runs behind Australia's first innings of 397.
AB de Villiers was the only batsman to withstand the onslaught, scoring 52 not out.
The raw figures do not do justice to the destruction caused by Johnson against the world's number one rated team.
Johnson needed just four balls to strike a major blow for Australia when he dismissed South African captain Graeme Smith with a vicious bouncer. He followed up with the wickets of Alviro Petersen and Faf du Plessis in his third and fourth overs.
Smith started confidently, pulling Ryan Harris's first ball for four and taking ten runs off the first over of the innings.
Petersen scored a single off Johnson's second ball, bringing Smith on strike against the left-arm fast bowler, who destroyed England by taking 37 wickets at an average of 13.97 during the Ashes series.
Johnson's first ball to Smith was short and there was a half-hearted appeal as it thudded off Smith's thigh pad to short leg.
The next ball was a fast bouncer which climbed towards Smith's head. The batsman lifted his bat in front of his face and the ball looped over the slips, with Shaun Marsh running back from third slip to take a fine catch.
