But with the selection axe hanging over them, Haddin and Ponting (62), who had not scored half centuries since the start of the Ashes, and the inconsistent Johnson (combining for a 72 partnership with Haddin) proved the heroes, getting the job done in 86.5 overs.
Clarke remains undefeated in series as a captain since taking over from Ponting after March's World Cup.
"I remember Punter telling me a while ago when you're captain, when you have a great series like this it's more special than when you perform individually and I guess that's what I probably feel now," said Clarke of Australia's third win in the last 13 tests.
"A big part of that is the way we got beaten in Cape Town, to be able to fight back and the roller-coaster throughout the tests, the light, the weather, the chasing the record last-innings total. For so many reasons it's one of my most special test matches and I'll remember it for a long time."
Cummins survived a tight lbw shout from Imran Tahir (1-63) and two balls later smashed him to the fence to cap an incredible debut.
The teenager took seven wickets for the match and became the second youngest in history to take six wickets in an innings (6-79).
"As soon as it hit my pad, I thought it must be going down leg," recalled the man of the match.
Only four teams had previously won in Johannesburg batting last and the old record for highest successful fourth-innings run chase was 294 set by Australia in 2006.
Australia have not lost a series in South Africa since the Proteas were readmitted to international cricket in the early 1990s.
The tourists' chase was teetering on a knife's edge on the final day, and the 168 runs required to win were made even more unlikely by a three-hour rain delay.
Clarke fell early and Ponting 10 overs later. Victory was looking a near-impossibility when a 50-run stand between Haddin and Michael Hussey (39) was broken right before tea to have them six down with 88 still needed.
Rookie Vernon Philander (5-70) only made his test debut in Cape Town last week, and was named player of the series with 14 wickets at 13.
- AAP