Australia were left to make seven runs an over in the last four overs, but Justin Langer steered them to victory with an unbeaten 33.
Although Australia lost their first wicket on 38 when Mark Taylor was caught at off Fanie de Villiers for 17, they recovered well, with Michael Slater sharing 67 runs for the second wicket with Mark Waugh, who made 43 including a six off Tim Shaw.
Earlier, South Africa, after winning the toss and deciding to bat first, had a disastrous start, losing their captain, Kepler Wessels, in the third over.
They recovered with an 85-run stand by Cronje and Gary Kirsten before Glenn McGrath took Kirsten's off stump for 45.
ONE-DAY INTERNATIONAL (Peshawar, Pakistan): South Africa 251 for 6 (50 overs; W J Cronje 100no); Australia 252 for 7 (49.4 overs; M J Slater 54).