Johnson followed up his seven for 68 in the first innings with five for 59 as South Africa were bundled out for 200.
As he did in the first innings, Johnson took a wicket in his first over and dismissed both South African opening batsmen cheaply to leave the hosts struggling.
AB de Villiers, who made 91 in the first innings, again provided the only significant resistance to the Johnson-inspired bowling attack, hitting 48 before driving Johnson to short cover where Australian captain Michael Clarke held a stinging catch.
It was a match dominated almost entirely by Australia, who thoroughly outplayed the team currently ranked number one in Test cricket.
Also Read
South Africa have not been beaten in a series since Australia beat them, also in South Africa, in 2008/09.
As he did in the first innings, Johnson took a wicket in his first over, having Alviro Petersen caught behind for one.
South African captain Graeme Smith, who was Johnson's first over victim in the first innings, hit a four off a thick outside edge in Johnson's second over but then fell to a superb catch by Alex Doolan when Smith clipped the ball firmly to short leg.
Faf du Plessis was the third man out, with the total on 49, falling victim to a ball which shot through low from Peter Siddle and trapped him in front of his stumps.
Hashim Amla made a solid 35 before he was caught at first slip off Ryan Harris.