South Africa levelled the one-day series last night after bowling Australia out for its lowest first-innings total in a 50-over match for 30 years.
Australia was knocked over for just 131 in the second one-day international at SuperSport Park, Centurion.
The Proteas made 3-132 in reply off 26.2 overs, winning by seven wickets with a massive 23.4 overs to spare.
The only time Australia set a lower target in a 50-over match was in January 1979, scoring 101 at the MCG against England.
Left-armer Wayne Parnell and pace spearhead Dale Steyn took four wickets each for South Africa in a devastating display.
After Ricky Ponting won the toss in sunny conditions, Australia collapsed with youngster Callum Ferguson top-scoring with 50 off 83 balls.
It was Ferguson's second half-century in the 24-year-old's sixth match.
The No6 batsman showed great composure amid a flurry of wickets.
Parnell, a 19-year-old paceman in his second ODI game, claimed 4-25 from eight overs and swung the ball alarmingly.
Steyn took three early wickets and finished with 4-27 from 9.2 overs.
Australia had been 6-40 before Ferguson and Johnson (30) added 63 for the seventh wicket.
Brad Haddin (1) played a ball from Steyn onto his stumps in the first over and Ponting (8) was caught behind off Parnell.
Parnell struck again in the sixth over when the left-armer trapped Michael Clarke for five.
David Hussey (1) tried a back-foot drive and was caught behind in Steyn's next over as Australia fell to 4-19.
Parnell also removed Mike Hussey lbw at 5-19 and James Hopes was caught at second slip for eight as all-rounder Kallis capped a successful comeback from a groin injury.
Johnson was lbw to spinner Johan Botha in the 31st over and Steyn produced a rearing short ball to have Ferguson caught at gully six overs later at 8-124.
Nathan Bracken (5) was Parnell's fourth victim and Nathan Hauritz was out for 10 to Steyn in the 41st over.
Because Australia was bowled out so quickly, there was time for it to bowl seven overs before the scheduled lunch break. The Proteas reached 1-33 off those seven overs after Mitch Johnson had Herschelle Gibbs caught at cover for two.
Johnson also had Kallis caught behind by Haddin for 31 to make it 3-93 after Ben Laughlin had opener Graeme Smith (40) caught by Clarke.
Australia, who won the first match by 141 runs at Durban on Friday night to reclaim the top one-day ranking, named an unchanged side.
South Africa recalled Kallis and promoted debutant Roelof van der Merwe and Parnell for Hashim Amla, Morne Morkel and Makhaya Ntini.
The third match of the five-game series is at Cape Town on Thursday night.