Sri Lanka openers Dimuth Karunaratne and Oshada Fernando provided their side with a good start but Zimbabwe struck twice in the final session to reduce the visitors to 122/2 before bad light forced early stumps in Harare.
Zimbabwe resumed the day on 352/6 with Regis Chakabva and Tinotenda Mutombodzi in the middle. Chakabva fell early, without adding a run to his overnight score of 31, becoming Lasith Embuldeniya's second victim. Soon after, Mutombodzi fell after he was trapped in front by Dhananjaya de Silva for 33.
Embuldeniya picked up two wickets in quick succession, dismissing Donald Tiripano and Victor Nyauchi, the No.11, as Zimbabwe were bowled out for 406. The Sri Lanka paceman finished with figures of 4/182.
Sri Lanka came in to bat for three overs, posting 6/0 in the opening session. After the lunch break, openers Karunaratne and Oshada made the Zimbabwe bowlers toil and stitched together a solid partnership of 88 in the afternoon session.
Sikandar Raza provided his side with the first breakthrough at the start of the final session, snaring the Sri Lankan skipper, who fell after scoring a steady 120-ball 44.
Oshada was then joined by Kusal Mendis, but the duo failed to build a partnership as Tiripano had the opener caught behind for 44. Rain interrupted play for a short period during the 51st over before bad light ended the day after 54 overs.
Mendis remained unbeaten at stumps on 19, with Angelo Mathews on 4.
Personalise your homepage with an ICC account
News, fixtures and updates tailored to your favourite team. Never miss a moment!