Grant Flower made an unbeaten 61 off 88 balls to help Zimbabwe beat Sri Lanka by 4 wickets and enter the final of the Sharjah Cup on Monday.
Earlier, Andy Blignaut and skipper Heath Streak shared six wickets as Zimbabwe bowled out Sri Lanka for a modest 193.
Streak set the tone for the Zimbabwe attack by clean bowling Sanath Jayasuriya in the first over for a duck to spoil the Sri Lankan skipper's 300th outing in one-day cricket.
With Zimbabwe bowlers maintaining a tight line and length, Sri Lankan batsmen struggled to pace their innings despite making good starts.
Hashan Tillekaratne, playing his 200th match, was top scorer with 31 off 52 balls.
Avishka Gunawardene (24), Marvan Atapattu (29), Kumar Sangakkara (25) and Kaushal Lakuarachchi (28) chipped in, but failed to build substantial partnerships.
Sri Lanka expected another good innings from left-hander Sangakkara, who scored unbeaten back-to-back centuries in the previous two matches, but this time he failed, falling in the deep while trying to step up the scoring.
The last Sri Lankan pair of Buddhika Fernando (14 not out) and Prabhat Nissanka (11) scored a brisk 25 off as many balls to give their bowlers some score to defend.