A maiden international half-century by Rubin Hermann took South Africa to a seven-wicket win over Zimbabwe in their Twenty20 international tri-series match at Harare Sports Club on Sunday.
The left-handed Hermann hit 63 off 36 balls as South Africa chased down a target of 145 with 16 balls to spare.
Defeat ended Zimbabwe's hopes of playing in the final and ensured that South Africa and unbeaten New Zealand will meet in the showpiece match on Saturday.
Zimbabwe were restricted to 144 for six after being sent in, despite a fourth wicket stand of 78 off 47 balls between Brian Bennett (61) and Ryan Burl (36 not out).
South Africa made a shaky start to their chase, losing both their opening batsmen to fast bowler Tinotenda Maposa with only 22 runs on the board.
But Hermann, 28, who made his debut in the opening match of the tournament, struck the ball confidently and dominated a third wicket stand of 106 with captain Rassie van der Dussen, who finished unbeaten on 52.