Australia's Aaron Finch hit his fifth ODI century to drive the hosts to a 73-run victory over South Africa in Canberra and a 2-1 lead in the five-match series.
Finch put on 118 for the first wicket with David Warner (53) and went on to score 109 on a good Manuka Oval wicket before being bowled by Proteas skipper AB de Villiers.
Shane Watson hit a bright 40 but it fell to Steve Smith to haul Australia out of a mid-innings slump with a sparkling unbeaten 73 from 55 balls that gave Australia an imposing total of 329 for five.
South Africa are rarely daunted by any target and openers Hashim Amla (102) and Quinton de Kock (47) started at a brisk pace at the ground where they will play Ireland in a group match at the World Cup next year.
Their opening stand ended with 108 on the board when De Kock got a top edge to a Josh Hazlewood delivery that was caught by Mitch Marsh but Amla dug in as a couple of wickets fell at the other end to reach his 17th ODI century.
By now he had been joined by De Villiers and their partnership looked like it might give the tourists a series lead going into the final two matches, in Melbourne on Friday and Sydney on Sunday.
The match turned, however, when they were dismissed in successive overs, Amla clean-bowled by Hazlewood (3-51) and De Villiers trapped leg before by Kane Richardson for 52.
Australian left-arm paceman Mitch Starc took four for 32 in mopping up the South African tail, which was shortened with the tourists on 256-9 when spinner Imran Tahir failed to bat after picking up a knock in the field.
Australia 329-5 in 50 overs (Finch 109, Morkel 2-84)
South Africa 256 all out in 44.3 overs (Amla 102, Starc 4-32)