Paceman Makhaya Ntini picked up six wickets as Australia were bowled out for 93 in the day-night match, giving South Africa their biggest win over the world champions.
Australia's total was their worst against South Africa, the previous lowest being 125 in Melbourne in 1997/98.
Ntini's spell included an accurate new-ball burst, which left Australia reeling at seven for four in the 10th over. He finished with six for 22, the best by a South African in one-dayers.
Chasing 290 to win, Australia were in disarray from the second over.
With Shaun Pollock, who bowled seven overs for nine runs, concentrating on line and length, Ntini was able to roar in and he had Australia on the back foot from his first ball, removing Adam Gilchrist for a single.
Gilchrist did not bother waiting for the umpire's decision after a fine inside edge to wicketkeeper Mark Boucher.
Phil Jaques, called up after the injuries sustained by captain Ricky Ponting and Andrew Symonds, lasted four balls before Ntini had him caught at second slip.
Ntini bouncer Damien Martyn (four) hooked a well-directed Ntini bouncer to fine leg and Michael Clarke (one) gifted another catch to Boucher.
Mike Hussey (22) and Shane Watson (27) were the only batsmen to make it past 20.
South Africa had made 289 for seven thanks to a quickfire unbeaten 51 from Justin Kemp and 66 from Herschelle Gibbs.
Kemp smashed four sixes as he reached his half century in 41 balls.
He and Pollock (38) added 62 off 50 deliveries for the sixth wicket after the hosts had reached 192 for five in the 39th over.
Boucher scored 42 with three sixes but fell to wrist-spinner Brad Hogg, who also caught and bowled Gibbs.
Stuart Clark, back in the Australian lineup after a rib injury, claimed the first wicket when he scattered Graeme Smith's stumps after the South African captain had scored 24.
Fellow opener Boeta Dippenaar made 31, an innings peppered with six boundaries, before dragging a Watson delivery on to his stumps.
The third match is in Port Elizabeth on Sunday.