Third Test, Cape Town (day four, close):
South Africa 651 bt Australia 209 & 422 by an innings and 20 runs
Johnson hit five sixes and 11 fours in his knock of 123
South Africa completed an innings victory over Australia on day four of the third Test in Cape Town, despite a fine century from Mitchell Johnson.
Johnson finished on 123 not out from just 103 balls as Australia made 422 in their second innings, just 20 runs short of making South Africa bat again.
Paul Harris took a career-best 6-127 in the innings and 9-161 in the match, while Dale Steyn finished with 3-96.
The result means the three-Test series finished 2-1 to Australia.
"Obviously, any time you lose it really hurts, but this has been really poor," said captain Ricky Ponting, after Australia were condemned to their first innings defeat since India beat them in Calcutta in 1998.
"The first two Tests were as good as we have played, while the first two days here were as bad as we have ever played. It shows if you're not quite there in terms of your best then results are not going to go your way.
We can take the momentum from this match into our series with England
Stand-in South Africa captain Jacques Kallis
"Bringing along a new generation of Australian players we've played some really good cricket. The Ashes series will be another opportunity for them."
South African stand-in captain Jacques Kallis said the triumph had provided the team with a major boost before their next Test series against England next winter.
"Obviously we're elated, it was huge to turn around our fortunes after the last two Tests. We've gained in confidence from this game and we can take the momentum from this match into our series with England," Kallis said.
Harris, the slow left-armer, was named man of the match at Newlands, but the day belonged to Johnson in notching his maiden first-class ton from just 86 balls.
He was given superb support from Andrew McDonald, who made 68 to share a 163-run partnership for the seventh wicket.
Ricky Ponting's men, resuming their second innings on 102-2, scored just 40 runs in the morning session and had to wait until the sixth over of the day for their first run.
Simon Katich moved to his half-century by flicking Albie Morkel down to the fine leg boundary for four, but he was out for 54, hitting Harris straight to JP Duminy at mid-off to end a 159-ball stay.
Michael Clarke was given out caught behind in the over before lunch, but the batsman referred the decision and replays showed he had not edged Jacques Kallis' delivery.
However, Hussey's determined innings of 39 came to an end just after lunch when he was surprised by a Steyn ball that reared up and fended to Duminy at gully.
Brad Haddin was put down by close fielder AB de Villiers off the bowling of Harris, but the Australian wicketkeeper chipped to mid-on in the next over, where Duminy took a fine diving catch to dismiss him for 18.
Steyn then removed the last of the recognised batsmen, Clarke playing a full-length ball onto his stumps, as the visitors reached tea at 231-6.
However, McDonald and Johnson dashed any hopes the hosts might have had of an early finish, scoring 116 runs in the first hour after tea and raising the 50 partnership in just over nine overs.
McDonald brought up his first half-century off 56 balls, which was followed by Johnson bludgeoning Morkel for four to raise his fourth Test fifty and third against South Africa.
The hundred partnership came from 91 balls, before Harris finally managed to put the brakes on when he claimed two wickets in two balls.
The first was that of McDonald, who was caught by close fielder De Villiers, with TV umpire Billy Bowden confirming his fate.
And the very next ball, Peter Siddle edged Harris to the same man at silly point.
But Johnson, who made 96 not out in the first Test at the Wanderers, kept them waiting and brought up his hundred by pulling Steyn for a massive six over mid-wicket.
In the next over, however, he ran out new man Bryce McGain for a duck while attempting to retain the strike.
And with the light quickly fading, Ben Hilfenhaus was last man out when he edged Harris to Ashwell Prince at first slip for 12.
The game was West Indian umpire Steve Bucknor's last Test match.