Graeme Cremer recorded his first Test hundred as Zimbabwe recovered impressively to avoid the follow-on in the first Test against Sri Lanka.
Zimbabwe ended day three in Harare still 169 behind after the tourists' mammoth first-innings 537, but the situation would have been even more desperate were it not for Cremer and a stubborn effort from the lower-middle order.
Cremer's previous highest score in Tests had been 43 but the skipper, batting at eight, made an excellent unbeaten 102 to help his side to 373 all out.
He was well supported by Peter Moor (79) and Donald Tiripano (46) as the hosts recovered from 139-6 to force Sri Lanka to bat again.
The tourists had to face just three overs before the close, reaching 5-0 and will look to build further on their lead on day four.
Resuming on 88-1, Zimbabwe soon found themselves in the mire when overnight batsmen Tino Mawoyo (45) and Hamilton Masakadza (33) fell in successive Suranga Lakmal overs.
Sean Williams (10) departed to Rangana Herath (3-97) and when Craig Ervine (12) and Malcom Waller (22) fell victim to Dilruwan Perera (2-66), the hosts were six down and still 298 in arrears.
But together, Moor and Cremer set about turning the tide, the former reaching his half century off just 49 deliveries.
A stand of 132 in less than 30 overs, was ended when Moor handed debutant Lahiru Kumara (1-90) a first Test wicket by fending a short ball to gully.
Cremer had only just reached his fifty at that stage, but he was well backed up by Tiripano, the pair adding 92 - including passing the follow-on mark - before the latter was pinned lbw by the occasional leg-spin of Kusal Mendis, a wicketkeeper by trade.
When Carl Mumba was trapped in front by Herath, Cremer was still on 99, but in the next over a single through the leg side brought up three figures.
Last man Chris Mpofu was clean bowled by Lakmal (3-69) to finish off the innings, with Cremer able to walk from the field deservedly unbeaten following a fine captain's knock.