Starting day four on 5-163, Mushfiqur Rahim (93) aided his side to 9-291 declared to establish a lead of 400.
Zimbabwe finished at stumps on 4-138, trailing by 262 runs with plenty of work required to avoid defeat.
Mushfiqur fell just short of his century after a stand of 84 with Nasir Hossain (67 not out).
He had started the day on 50 and looked on course to reach triple figures before he and Shamshur Rahman (zero) both lost their wickets in three balls to dent their progress.
The Bangladesh captain was caught by Vusi Sibanda in stunning fashion from Hamilton Masakadza's delivery. Rahman left the crease for a duck, after misreading a Graeme Cremer delivery and was subsequently stumped by Richmond Mutumbami.
Just after lunch, Bangladesh sent the African minnows in to chase down 401 for victory.
Zimbabwe made a solid start in their run-chase but Shakib Al Hasan made the crucial breakthrough just eight balls before tea with the wicket of Regis Chakabva (22).
Sibanda (32) had his encouraging innings brought to an abrupt end when Gazi caught him off Shakib's bowling.
That brought captain Brendan Taylor to the crease and he looked to build a partnership with Masakadza but only managed 10 before being trapped lbw by Ziaur Rahman.
Malcolm Waller (15) was the next wicket to fall leaving Shingi Masakadza (seven not out) and Hamilton Masakadza (46 not out) at the crease to begin the final day on Monday.
First Posted 29 April, 2013 9:51AM AEDTTags: Bangladesh , Zimbabwe