Marsh plundered an unbeaten 86 off 51 balls, including seven sixes and three in a row off fast bowler Dale Steyn, to take his side to 282 for seven in 50 overs at the Harare Sports Club.
South Africa were then bowled out for 220 in 44 overs despite 126 from Faf du Plessis who scored his second consecutive century against Australia.
Australia’s win came after an embarrassing defeat on Sunday to hosts Zimbabwe and a seven-wicket loss to South Africa last Wednesday.
They also picked up a bonus point for their victory, ensuring them a place in Saturday’s final, when they will play the winner of South Africa’s match against Zimbabwe on Thursday.
Australia made a bright start as opener Phil Hughes and Steve Smith – restored to the side in the absence of injured captain Michael Clarke – added 85 for the second wicket before South Africa put the brakes on their scoring.
Hughes holed out to long-on for 85 off 92 balls as he tried to take advantage of the last over of the power play but Marsh came to the crease and soon set about the bowling as Australia stepped up the run rate again in the last 10 overs.
“We lost wickets at key times but Mitch helped set a competitive total on that wicket, one we could look to defend,” said stand-in captain George Bailey.
Early wickets proved important for Australia as South Africa slumped to 64 for three in response, with captain AB de Villiers among those failing with the bat on his return following a viral infection that kept him out of last Friday’s win over Zimbabwe.
But 73 runs for the sixth wicket between Du Plessis and Ryan McLaren briefly threatened a comeback before McLaren (24) was caught by Smith at mid-wicket off Kane Richardson.
Du Plessis then followed as he stood on his stumps, attempting to take off for a quick single, and was out hit wicket. His innings featured six sixes and came off just 109 balls.
Marsh followed his batting heroics with two wickets off his five overs but Glen Maxwell posted the best bowling figures of two for 22. (Reuters)