A brilliant unbeaten century from Craig Ervine helped Zimbabwe frustrate Sri Lanka after Dinesh Chandimal's reign as Test captain had started so well in Colombo on day one.
Chandimal replaced Angelo Mathews as skipper after the all-rounder stepped down following a humiliating one-day international series loss to Zimbabwe this week.
The wicketkeeper-batsman could not have asked for a much better beginning to his tenure, Rangana Herath striking twice as the tourists were reduced to 38-3 after Graeme Cremer won the toss at R Premadasa Stadium on Friday.
Zimbabwe were still in trouble on 195-6 in the one-off Test, but recovered to 344-8 at stumps after Ervine came to their rescue with a magnificent 151 not out - his highest score in cricket's longest format.
Cremer might have been rueing his decision to bat first after Herath cleaned up Regis Chakabva (12) with an arm ball before removing fellow opener Hamilton Masakadza (19).
Debutant Tarisai Musakanda's (6) first spell at the crease proved to be short-lived, Lahiru Kumara getting the number three caught behind following a review after he was initially given not out by Ian Gould.
Sean Williams (22) also failed to make it through to lunch, but Ervine stood firm after getting off the mark by reverse-sweeping Herath to the boundary and went on to bring up his half-century in the same over that he struck Dilruwan Perera for six over midwicket.
Sikandar Raza (36) offered support for the composed Ervine in a much needed sixth-wicket stand of 84, which Herath ended by trapping the all-rounder leg before.
Malcolm Waller also added 36 before becoming wily spinner Herath's fourth victim and Ervine raised his bat to celebrate a second Test century after sweeping his 146th ball for a single.
The left hander was still there at the close, having struck a six and another 13 boundaries in a vital knock, with Donald Tiripano 24 not out after the pair put on 62 to torment Sri Lanka in the evening session.