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,
Zimbabwe resumed their second innings in the morning on 240 for seven, batting on briefly to push that to 247 for seven declared.
Captain Sean Williams, who made a century in the first innings, picked up the three runs he needed for another half-century to finish 53 not out.
Williams then chose to open the bowling with spinner Sikander Ravi who took seven wickets in the first innings.
The pitch, however, looked a lot more benign and Ravi 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.