Harare – Faf du Plessis hit his third century in four games as he carried South Africa to 271 for six in the final game of a one-day triangular series on Thursday.
Du Plessis paced his innings superbly on another turning pitch to score 121 from 140 deliveries, which allowed the Proteas to recover from the early loss of their openers.
The No. 3 batsman only scored his maiden one-day hundred last Wednesday against Australia, but followed it up with 126 against the same opposition in a losing cause on Tuesday before adding a third century on Thursday.
Du Plessis' innings made it almost impossible for Zimbabwe to qualify for Saturday's final, where Australia lie in wait.
The hosts must chase their target in 25.2 overs in order to gain a bonus point and improve their net run rate sufficiently to knock South Africa out.
Although the game began promisingly for Zimbabwe after they won the toss and inserted South Africa before reducing them to 26 for two, Du Plessis added 70 for the third wicket with Rilee Rossouw.
While Rossouw was bowled for 36 by left-arm spinner Sean Williams and AB de Villiers was run out in bizarre circumstances when John Nyumbu dropped a return catch onto the stumps at the non-striker's end, a savvy 103-run stand between Du Plessis and JP Duminy put the Proteas back on track.
As Zimbabwe's spinners whirled away, the pair manoeuvred a succession of ones and twos to set the innings up for a big push at the end.
Although both batsmen departed attempting big shots, with Duminy out for 51, the Proteas added 61 in the last five overs to leave Zimbabwe with a huge task.