Zimbabwe's bowlers ensured Sri Lanka made slow progress on day two of the second Test in Harare before play was halted early due to bad light.

Starting on 352-6, the hosts ended an impressive first innings on 406 all out as they bid to bounce back from their 10-wicket defeat to the tourists in the series opener last week.

And Zimbabwe's attack was economical in restricting Sri Lanka to 122-2 from 54 overs in their reply.

After Sean Williams' century on day one, Zimbabwe returned to the crease on Tuesday in a strong position, though they had added just 10 to their overnight total when wicketkeeper Regis Chakabva fell for 31 to Lasith Embuldeniya, who ended with figures of 4-182.

Debutant Tinotenda Mutombodzi (33) did most of the work in ensuring his side moved past the psychological 400 mark before falling to Dhananjaya de Silva (3-71).

Embuldeniya took care of the last two wickets and Sri Lanka made a solid start to their first innings, captain Dimuth Karunaratne and fellow opener Oshada Fernando combining to produce a disciplined 94-run stand.

But Sikandar Raza took the pivotal wicket of Karunaratne, who was trapped lbw for 44 while trying to sweep a full delivery, before Fernando's 168-minute innings came to an end as he also fell for the same score as his skipper, Donald Tiripano getting him caught behind.

Kusal Mendis against Raza produced an entertaining duel, the Sri Lanka number three smashing him for six while he was also dropped by Prince Masvaure, fielding at forward short leg, and a diving Tiripano at deep mid wicket either side of that maximum.

Having scored 80 in the opening Test, Mendis will return to the crease on Wednesday on 19 not out, partnered by Angelo Mathews (4no), with Sri Lanka still 284 runs adrift.