The hosts were 43 for one heading into the third session with Vusi Sibanda (21) and Hamilton Masakadza (nought) at the crease, requiring 358 for victory.
Zimbabwe were looking comfortable in their second innings before Shakib Al Hasan bowled Chakabva for 22 with tea looming.
Pakistan registered the highest fourth-innings run chase of 192 on this ground in 1998, a statistic which only emphasises how tough a task the home side face.
Earlier in the day, Mushfiqur Rahim fell seven runs short of a century as he sought to put Bangladesh in a strong position. The captain began the day 50 not out and was making steady progress before he and Ziaur Rahman both fell in the space of three balls to halt the visitors' momentum.
Mushfiqur and Nasir Hossain made virtually untroubled progress in the morning as they built a partnership of 84 but the skipper fell in the 21st over of the day.
Sibanda claimed a stunning catch as Mushfiqur got a thick edge to a Masakadza delivery and the Zimbabwe opener dived to his left to take a two-handed claim.
And three balls later Rahman was gone for a duck, stumped by Richmond Mutumbami after misjudging the flight of a Graeme Cremer delivery.
That brought Sohag Gazi to the crease and he hammered Masakadza for a six three overs before the break.Hossain was 37 not out at lunch with Gazi in 11.
Bangladesh declared on 291 for four. Hossain finished unbeaten on 67 for the visitors, while Gazi went for 21 caught by Elton Chigumbura off Cremer, before the same bowler had Sajidul Islam caught behind by wicketkeeper Mutumbami for a duck.