As it happened: Australia v SA
Proteas skipper AB de Villiers had vowed his side would be seeking redemption after being beaten by 32 runs in the series opener on Friday.
His team backed those words with a superb bowling display as the home side were dismissed for just 154 in 41.4 overs on what appeared a good batting wicket.
South Africa overcame some anxious moments and reckless batting to edge to the victory target, reaching 157 for seven in just 27.4 overs.
Paceman Josh Hazlewood was one bright light for the Australians, with career-best figures of 5-31.
Towering paceman Morne Morkel led the way for South Africa with 5-21, his second five-wicket haul in one-day internationals and career-best figures in a man-of-the-match performance.
Morkel said the South Africans were much better with the ball on Sunday, after conceding 300 runs on Friday.
"We put them under pressure more today," he said.
"On this wicket you need to go a touch fuller.
It's always nice when the ball is carrying and the keeper is catching it head high, but you are actually just wasting energy.
"For us it was important to find the right length, which on the WACA wicket we found was a bit fuller."
By contrast, stand-in Australian captain George Bailey was less than impressed with his side's batting.
"There were probably not that many dismissals where guys would say that ball was too good, but it was a culmination of South Africa building pressure and our batters exploding a bit," Bailey said.
The South Africans made an impact with the ball from the outset, destroying the Australian top order to have the home side in deep trouble at 34-4.
It was Morkel who struck the first blow with David Warner caught down the leg side by wicketkeeper Quinton de Kock for a duck.
Warner was initially given not out, but replays showed clear contact with the glove and Nigel Llong overturned the initial decision.
Bailey and emerging all-rounder Mitchell Marsh raised Australian hopes briefly when they added 58 for the fifth wicket before Bailey was brilliantly caught by a diving du Plessis from the bowling of Vernon Philander (1-16) for 25.
Bailey was captaining Australia in the absence of Michael Clarke, who was ruled out of the remainder of the series with a recurrence of a left hamstring problem during his team's opening victory.
Marsh was the only Australian batsman to offer significant resistance, compiling 67 from 88 balls.
A contentious third umpire decision helped swing the game firmly back South Africa's way as Australia's middle order tried to rally after the poor start.
Australia were 125-5 when Matthew Wade was given not out caught down the leg side by wicketkeeper Quinton de Kock from the bowling of Morkel, but after lengthy deliberation the decision was overturned.
Morkel struck again without addition of the score, bowling Glenn Maxwell for a duck.
The giant South African quick then removed Mitchell Johnson, caught behind for three, to claim his fifth scalp for the innings as Australia slumped to 129-8.
Australia: George Bailey (c), David Warner, Aaron Finch, Shane Watson, Steve Smith, Mitchell Marsh, Glenn Maxwell, Matthew Wade, Mitchell Johnson, Nathan Coulter-Nile, Josh Hazlewood.
South Africa: AB de Villiers (c), Quinton de Kock, Hashim Amla, Faf du Plessis, Farhaan Behardien, David Miller, Rilee Rossouw, Vernon Philander, Dale Steyn, Morne Morkel, Imran Tahir.
Umpires: Brent Bowden (NZL), John Ward (AUS)
TV Umpire: Nigel Llong (ENG)
Match referee: Javagal Srinath (IND)