Australia have won their first ODI since late January, pipping South Africa by seven runs to level the Gillette ODI series 1-1 in Adelaide.

The Australians were all out for 231 in 48.3 overs - the seventh time in their past eight one-day internationals they have failed to bat their allotted overs.

In response, South Africa made 9-224, with Marcus Stoinis claiming 3-35, as well as affecting a pivotal run-out of Aiden Markram that helped turn the tide for the side.

Carey made 47 from 72 balls, Chris Lynn struck 44 from 44 deliveries and captain Aaron Finch 41 from 63 balls.

But, along with Shaun Marsh (22 from 26 balls), the top-order batsmen failed to fully cash in.

Proteas paceman Dwaine Pretorius took 3-32 from 10 overs while Kagiso Rabada (3-53) and Dale Steyn (2-31) also claimed multiple wickets.

South Africa, seeking a win to take an unassailable 2-0 lead in the three-match series, put the brakes on just as Australia appeared set to accelerate.

Lynn's knock featured three fours and two sixes but he fell when hitting top gear.

The Queenslander had smacked 18 runs from four consecutive Rabada balls - a six followed by three fours - but was out next ball.

His dismissal continued a trend as Australia's batsmen formed a series of handy stands without converting any into imposing totals.

After opener Travis Head (8) went early, Finch and Marsh, returning after missing Australia's six-wicket loss in the series-opener in Perth because of abscess on his buttocks, featured in a bright 44-run partnership from 51 balls.

But Marsh then edged a widish Rabada delivery to gloveman Quinton de Kock.

Finch put on 30 runs with Lynn before the skipper departed, chopping a short ball from Pretorius onto his stumps.

Lynn and Carey then added 37 runs before momentum again stalled with Lynn's dismissal.

South Africa soon captured the wickets of Glenn Maxwell (15), Marcus Stoinis (2), Pat Cummins (3) and Mitchell Starc (6) and Carey.

Spinner Adam Zampa added a late flourish, making 22 from 24 balls and putting on 27 runs for the last wicket with Josh Hazlewood (10 no).