Captain Graeme Cremer scored his maiden test century on Monday to help Zimbabwe avoid the follow-on as they scored 373 in reply to Sri Lanka’s 537 in the first test.
Sri Lanka closed the third day five without loss in their second innings, a 169-run overall lead.
Cremer’s ton received an ecstatic reception from the small crowd as Zimbabwe showed gutsy determination that had been missing through six successive test defeats going into the two-match series against the in-form but injury-hit Sri Lankans.
Zimbabwe’s lower-order rally was inspired by their captain, whose previous high test score was 43 against Bangladesh three years ago.
Cremer shared a 132-run partnership for the seventh wicket with wicketkeeper Peter Moor, playing only his second test, and another 92-run stand with Donald Tiripano for the eighth wicket.
The 30-year-old Cremer was 102 not out off 207 balls at the end of the innings.
Moor fell for 79, fending off a bouncer to hand teenage debutant Lahiru Kumara his first test wicket.
Tiripano (46) was trapped lbw by Kusal Mendes, usually a wicketkeeper and bowling only his second over in test cricket.