Mahmudullah (82 not out) and Mushfiqur Rahim (77) were the key men with the bat for Bangladesh as the pair shared a crucial 134-run partnership for the fifth wicket.

That rescued the home side from the perilous position of 32-4, while Mashrafe Mortaza's 39 lower down the order game them a late flourish.

Zimbabwe made a good start to their reply and, at 166-3, they looked on course to record a first win of the tour, but an all too familiar collapse saw them fall short, finishing their 50 overs on 235-8.

Solomon Mire (3-49) and Neville Madziva (3-60) gave Brendan Taylor's side a great start to the match as they shared four wickets in the opening 13 overs.

When Mire removed the dangerous Shakib Al Hasan for one with a slower delivery, the batsman mistiming his shot and looping a catch straight to Timycen Maruma, the chance to rip through the middle order was there, but they failed to take it.

Mahmudullah played a patient and calm innings throughout and allowed his more attacking partners to bludgeon the runs when required, the 28-year-old striking four fours in his 112-ball knock - his highest ODI score and first half-century in 18 months.

At the other end Mushfiqur was in fine form, his 78-ball innings including seven four before he got a top edge to a Tafadzwa Kamungozi delivery, and Mashrafe ensured they surpassed 250 with some strong late hitting.

Bangladesh's bowlers also made a good start with Shakib (2-28) and Jubair Hossain (2-42) reducing Zimbabwe to 60-3, but Mire (52) and Taylor (63) put them back in contention with a 106-run stand.

Mire capped a good day with six fours and two sixes to reach his third half-century, while Taylor only needed 69 balls to get to rack up his score.

However, the loss of both men within two overs began their demise, and although Regis Chakabva (26) and Tendai Chatara (16 not out) offered some hope, it proved unfounded.

The teams meet again on Monday in the final match of the tour as Zimbabwe eye a consolation win.