Half-centuries from captain Mushfiqur Rahim and Shakib Al Hasan put Bangladesh in a dominant position at the end of day three of the second Test against Zimbabwe.
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-3, with Tamim Iqbal (7), Jahurul Islam (2) and Mohammad Ashraful (4) out cheaply.
But after Shakib (59) put on 47 with Mominul Haque (29), he then added 84 with his skipper, whose unbeaten 50 helped guide the tourists to 163-5 - a lead of 272.
Shingi Masakadza took 3-33 but the home side face an uphill task to save this Test.
Earlier, Brendan Taylor's men began the day on 158-4, but they could only add four to that total before Malcolm Waller was out for 32. He pulled Sohag Gazi's sharp turner to deep midwicket where Shakib took a simple catch to end the partnership at 66.
That brought Richmond Mutumbami to the crease, but it was Elton 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 Islam had Mutumbami 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 next out for 16, Shingi Masakadza fell for five in the next over and Gazi then wrapped things up as he bowled Kyle Jarvis for a duck.
Robiul was the pick of the visitors' bowlers, finishing with figures of 5-85.