Half-centuries from Angelo Mathews and Kusal Mendis put Sri Lanka on top in the first Test and Zimbabwe debutant Kevin Kasuza suffered a nasty blow on the head on day three at Harare Sports Club.
Kusal made 80 and Mathews was unbeaten on 92 when the tourist closed on 295-4 in reply to Zimbabwe's 358 all out on Tuesday, trailing by only 63 runs.
Victor Nyauchi (2-38) claimed his first two international wickets but it was not such a memorable day for another man making his Zimbabwe bow.
Kasuza was struck on the helmet by a pull from Kusal and sustained soft tissue injury to the skull, but the batsman's concussion test showed up as negative and a CT scan ruled out any internal damage.
Dimuth Karunaratne (37) was caught by Ainsley Ndlovu at midwicket off Nyauchi and that was the only wicket to fall in a morning session that ended with Sri Lanka 124-2, with Kasuza absent after being struck in the last over before lunch.
Kusal brought up an 11th Test half-century before dispatching Sikandar Raza for three consecutive fours as Mathews dug in at the other end.
Nyauchi had Kusal caught by Brendan Taylor at first slip to end a third-wicket stand of 92 and Sri Lanka was 227-4 when Dinesh Chandimal was caught and bowled by Sean Williams.
It was unable to dislodge Mathews, though, and the former captain was rewarded for his patience with a sixth Test half-century after slapping Ndlovu over midwicket for six before launching Williams over the rope.
Mathews and Dhananjaya de Silva (42 not out) had put on 68 for the sixth wicket to put Sri Lanka in a promising position when stumps were drawn.
Latest on Sportstar
- England’s Moeen considering Test return ahead of Ashes - reports
- Bucks announces Griffin as head coach
- Pulisic plans Chelsea return but says anything can happen
- Stuttgart wins playoff, prolongs Hamburg’s wait to rejoin Bundesliga
- French Open 2023: Last Argentine standing Etcheverry into quarterfinals