The hosts survived a few anxious moments before passing Zimbabwe's modest total of 193-8 with just one over to spare for their fifth successive victory in the series on Saturday.
The tourists had an opportunity to post a consolation victory when they reduced Bangladesh to 141-6 but were thwarted by skipper Habibul Bashar (32 not out), who kept his cool under pressure to steer his side home.
The Zimbabwean bowlers also lacked direction as they conceded 30 wides, which proved crucial in a close match.
Seamer Gary Brent grabbed a career-best haul of 4-22 to raise Zimbabwe's hopes of posting a win before Bashar and wicket-keeper Mushfiqur Rahim put on 34 vital runs for the unfinished eighth-wicket stand.
Brent broke an 86-run stand for the opening wicket between Mehrab Hossain (45) and Shahriar Nafees (33) and went on to claim three more victims in his 10 overs.
Zimbabwe earlier failed to set a stiff target despite a fighting 75 from Stuart Matsikenyeri. Put in to bat, they were 138-3 before faltering against a disciplined Bangladeshi attack.
Opener Matsikenyeri alone offered lengthy resistance, hitting seven fours in his 114-ball knock for his fourth half-century in One-day internationals. He put on 63 for the second wicket with Chamu Chibhabha (27).
Zimbabwe's slide began with the dismissal of Elton Chigumbura (27), who was caught behind off spinner Hossain with the total on 138. They failed to pass the 200 mark, losing wickets at regular intervals.
Seamer Mashrafe Mortaza was the most successful bowler, claiming the last three wickets to finish with 3-36 off 10 overs. Hossain took 2-30.