An unbeaten fourth wicket partnership of 79 between Brendan Taylor and Sean Williams rescued Zimbabwe on the final morning of the first Test in Harare on Thursday after Suranga Lakmal threatened to win the match for Sri Lanka.
The 32-year-old pace bowler rocked the home side with three wickets in his first three overs as Zimbabwe, needing 157 to make Sri Lanka bat again, crumbled to 41 for three.
Taylor and Williams, however, battled back, batting positively on a surface that remains largely benign in spite of the occasional ball keeping low.
At lunch they had taken Zimbabwe to 120 for three, still 37 short of making Sri Lanka chase in the fourth innings.
Zimbabwe captain Williams struck three fours in one over off Lasith Embuldeniya but was then was dropped off the left-arm spinner on 25 at short midwicket, going to reach 39 at the break.
Taylor hit five fours and clubbed Embuldeniya for six over square leg to reach 38.
It was a distant cry from the early stages of the session when Zimbabwe, playing their first Test since November 2018, appeared to be sliding to defeat as Lakmal plucked out the top three, all left-handers.
In his first over, the second of the day, with Zimbabwe resuming on 30 without loss, Lakmal found some extra bounce to find the edge of Prince Masvaure's bat which carried through to wicketkeeper Niroshan Dickwella.
In his next over Lakmal accounted for the other opener Brian Mudzinganyama, who had been drafted into the team as a concussion substitute for Kevin Kasuza who was hit a fierce blow on the head while fielding at short leg on Tuesday.
Playing in his first Test, Mudzinganyama made the mistake of not playing a shot to a ball that struck him on the back leg and was adjudged to be leg before.
Lakmal followed up with the prize wicket of Craig Ervine in his next over.
The 34-year-old, who made an assured 85 in the first innings, survived a confident lbw shout off his second ball and had made just seven when, in the next over, he flicked uppishly at a Lakmal inswinger, clipping the ball straight to Dimuth Karunaratne at short leg.
Three wickets had fallen for eight runs and Zimbabwe were sinking before Williams and Taylor steadied the ship.
Zimbabwe captain Sean Williams reverse sweeps as Zimbabwe counterattacked after losing three quick wickets
Suranga Lakmal rocked Zimbabwe with three wickets in his first three overs