South Africa paceman Morne Morkel thrived on a fast WACA pitch to capture five wickets but the tourists made hard work of a three-wicket victory over Australia in the second one-day international in Perth on Sunday.
Morkel's return of 5-21 was his best in one-day cricket and helped skittle Australia for a paltry 154 runs from only 41.4 overs on a day of brilliant sunshine in Perth.
Although losing both openers cheaply in reply and stumbling to 153-7, captain AB De Villiers (48) and David Miller (22 not out) ensured a regulation victory with over 22 overs to spare and levelling the five-match series 1-1.
Australia's innings began disastrously, with Morkel having the dangerous David Warner caught behind for a duck before the same bowler caught Aaron Finch for eight at mid-on off the bowling of Dale Steyn (3-31).
Shane Watson (11) and Steven Smith (10) also went cheaply before George Bailey (25) and Australia's top scorer Mitchell Marsh (67) steadied the innings with a 58-run partnership.
Vernon Philander broke the stand, however, with Faf Du Plessis taking a fine catch low at mid-on to remove Bailey, before Morkel had wicketkeeper Matthew Wade caught behind for 19 and Glenn Maxwell bowled for a duck in the same over.
Morkel captured his fifth wicket when Mitchell Johnson edged behind for three, leaving the hosts reeling at 129-8 and their hopes of building a solid total in tatters.
Australia quicks Josh Hazlewood and Johnson struck early to remove openers Quinton de Kock (4) and Hashim Amla (10) before Rilee Rossouw contributed a valuable 30 before swiping a nick behind off part-time spinner Maxwell.
Du Plessis and De Villiers drove South Africa to a comfortable 113-3 before Hazlewood struck to remove Du Plessis for 19 and Farhaan Behardien for a duck in successive balls.
David Miller survived the hat-trick ball and an onslaught of short-pitched bowling from left-armer Johnson, but Hazlewood struck again to remove De Villiers and Vernon Philander for a duck for another chance at a hat-trick.
Steyn defied Hazlewood, however, and slogged his third delivery over the bowler to the fence to bring up the winning runs.
Hazlewood was the pick of the Australian bowlers with 5-31. The third ODI will be played in Canberra on Wednesday.