Zimbabwe's hopes of squaring the two-Test series stalled when Oshada Fernando and Kusal Mendis shared an unbroken second wicket partnership of 79 on the final day on Friday to take Sri Lanka to 105 for one at lunch.
Chasing an imposing target of 361, Sri Lanka lost captain Dimuth Karunaratne early on but Fernando and Mendis batted though the rest of the session in some comfort, with both reaching 46 not out at lunch.
Sri Lanka require another 256 in the last two sessions although with rain forecast, any result other than a draw may be beyond both sides.
Rain and bad light had cut short Thursday's play but Zimbabwe captain Sean Williams chose not to declare on their overnight 240 for seven.
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.
More From This Section
The pitch, however, looked a lot more benign and Raza failed to trouble the openers in his seven-over spell.
The only wicket came at the other end when Karunaratne nibbled at a Carl Mumba delivery outside off-stump and edged through to wicketkeeper Donald Chakabva.
Disclaimer: No Business Standard Journalist was involved in creation of this content