A five-wicket haul from seamer Robiul Islam and an unbeaten half-century from skipper Mushfiqur Rahim carried Bangladesh to a promising 272-run second-innings lead on day three of the second and final Test against Zimbabwe at the Harare Sports Club on Saturday.
After dismissing the home side for 282 just after lunch, the Tigers had a nightmare start to their second innings as they slumped to 18 for three.
But after Shakib Al Hasan (59) put on 47 with Mominul Haque, he then added 84 with his skipper, whose unbeaten 50 helped guide the tourists to 163 for five.
Brendan Taylor's men began the day on 158 for four with Malcolm Waller and Elton Chigumbura well set, but they could only add four to that total before the first wicket of the day fell.
Waller was on 32 when he pulled Sohag Gazi's sharp turner to deep midwicket where Shakib gratefully took a simple catch to end the partnership at 66.
That brought Richmond Mutumbami to the crease, but it was Chigumbura, who had begun the day on 45 not out, who looked to press the score on.
Bangladesh thought they had another breakthrough in the 83rd over as Robiul had Mutumbami trapped plum lbw, but replays showed that the bowler had overstepped.
But with the partnership on 85, Robiul struck as he had Mutumbami (42) trapped lbw and then, in the last over before lunch, bowled Chigumbura (86) through the gate to halt Zimbabwe's momentum.
Keegan Meth was dropped in the third over after the break and looked to punish that as he hammered a six off Sohag Gazi, but he fell for 16 two balls later as Mushfiqur took a sharp catch.
Shingi Masakadza fell in the next over after scoring just five as Mushfiqur took another catch, this time off the bowling of Robiul as the bowler finished with figures of five for 85.
Sohag Gazi then wrapped things up as he bowled Kyle Jarvis for a duck.
Bangladesh's reply started poorly and there were just seven runs on the board when Shingi Masakadza provided Tamim Iqbal (seven) with a dream delivery that was adjudged to have brushed his bat with wicketkeeper Mutumbami having to leap to take the catch.
And things went from bad to worse in Shingi Masakadza's next over as an outswinger this time clearly caught the edge of Jahurul Islam's bat and the wicketkeeper took an easy catch to dismiss the opener for just two.
The home side had their tails up and in the next over Mominul was dropped at third slip, but Jarvis claimed a controversial victim just two balls later.
Mohammad Ashraful (four) was given out lbw but replays suggested Jarvis' low full toss was straying well down the leg-side.
That left the tourists 18 for three having lost three wickets in 18 balls for just 11 runs.
But Mominul and Shakib managed to guide Bangladesh into the evening session before Mominul fell to Shingi Masakadza as he edged through to Hamilton Masakadza at first slip.
Mushfiqur came to the crease and began to build a steady partnership with Shakib but that was nearly broken in the 37th over when Vusi Sibanda put down Shakib at backward point off a Jarvis delivery.
And the former captain was dropped again four overs later with Taylor spilling the catch in an almost identical position to the previous chance.
The partnership was eventually ended as Shakib wafted at a wide delivery from Hamilton Masakadza and Mutumbami claimed an easy catch behind the stumps.
Seven runs in the final over of the day moved Mushfiqur to his 50 off 85 balls with six fours.