Set 482 for victory, the Proteas were bowled out for 200 in 59.4 overs in their second innings.
Johnson followed his first innings haul of 7/68 with 5/59 as South Africa, with the exception of AB de Villiers, could not handle the extreme pace of the left-arm quick.
De Villiers made 91 in the first innings, and was on 48 (90 balls with five fours) in the second before becoming Johnson’s 12th victim of the match — caught at short extra-cover by Steven Smith.
Earlier, Australia faced 3.2 overs for the addition of two runs to reach 290 for four, a lead of 481, before they declared.
Resuming on 288 for three, Shaun Marsh was out, caught behind by De Villiers, off the bowling of Dale Steyn without adding to his overnight 44.
At the fall of the wicket, the declaration immediately followed.
Chasing a massive target, South Africa were soon in trouble as Alviro Petersen departed for one, caught behind by Brad Haddin, off Johnson.
The strike brought up Johnson’s 250th Test wicket, playing in his 57th match.
Proteas captain Graeme Smith could only watch in shock as the ball Johnson bowled on his pads, was clipped off the middle of the bat straight into the hands of Alex Doolan, who took a stunning reaction catch at short square leg.
The double strike left the Proteas struggling at 12 for two inside four overs.
Faf du Plessis (18) fell to a delivery which kept low, as he was out leg-before-wicket to Peter Siddle just before lunch.
Hashim Amla (35) was out soon after the interval, edging to Marsh at slip off the bowling of Ryan Harris.
Johnson removed JP Duminy, who struggled for his 10 runs off 60 balls, and then peppered Ryan McLaren with short deliveries until he departed for six, caught behind.
With the departure of De Villiers, and only the tail to come, victory for Australia was all but assured.
Siddle dismissed Robin Peterson (21) with a delivery which kept low and took out the middle stump.
Harris picked up a second wicket, dismissing Steyn, and Morne Morkel was run out, giving the Aussies a 1-0 lead in the three match series.