A stubborn 80 not out from Sri Lankan opener Kusal Mendis frustrated Zimbabwe's hopes of squaring the two-Test series on Friday's fifth and final day of the second Test in Harare.
Set a challenging 361 to win, Sri Lanka dropped anchor, scoring just 51 runs in the afternoon session, to reach 156 for three at tea.
Sri Lanka lost captain Dimuth Karunaratne in the morning and Oshada Fernando for 47 just after lunch but Mendis batted though to tea, striking 10 fours in his 170-ball vigil.
Zimbabwe gained some renewed hope shortly before the interval when Angelo Mathews slapped a delivery from Victor Nyauchi straight to Craig Ervine at mid-on.
Sri Lanka require another 205 in the last session although with rain forecast, any result other than a draw would now be a surprise.
Rain and bad light had cut short Thursday's play but Zimbabwe captain Sean Williams chose not to declare on their overnight 241 for seven.
More From This Section
Instead they batted on briefly to reach 247 for seven before the declaration came with Williams, who made a century in the first innings, picking up the three runs he needed for another half-century to finish 53 not out.
Williams then chose to open the bowling with spinner Sikandar Raza who took seven wickets in the first innings.
The pitch, however, looked a lot more benign and Raza failed to trouble the openers in his first seven-over spell.
The only wicket of the morning came at the other end when Karunaratne nibbled at a Carl Mumba delivery outside off-stump and edged through to wicketkeeper Donald Chakabva.
Fernando had only added a single to his lunchtime 46 when he fell leg before to Raza.
Disclaimer: No Business Standard Journalist was involved in creation of this content