Marsh struck a brutal 86 not out from 51 balls to boost the Australian total to 282 for seven, and then took two key wickets as South Africa were bowled out for 220 in spite of Faf du Plessis' superb hundred.
It was the best response Australia could have hoped for after they were humiliated by hosts Zimbabwe on Sunday to leave their participation in Saturday's final in doubt.
Australia's innings had been pedestrian up until Marsh's arrival, with Phil Hughes rarely getting into his full stride in the course of his 85 and South Africa picking up regular wickets after winning the toss and electing to bowl.
Although Hughes put on 85 for the second wicket with Steve Smith, who returned to the Australian side and batted at No. 3 following Michael Clarke's injury-enforced departure, the spin duo of Imran Tahir and Aaron Phangiso picked up three cheap wickets.
Also Read
However Marsh's big hitting came to the rescue as he smashed seven sixes, including three in three balls off Dale Steyn, and ensured Australia took 85 runs from the last seven overs.
"I think if we have to pinpoint somewhere that we lost the game it was with Mitchell Marsh's innings," Du Plessis said.
"Their innings was set up to get to 240 or 250, so we as a bowling unit will be disappointed for him to score so many sixes in the way that he did.