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.
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.
Also Read
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.
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.