Bangladesh 216 for 9 (Tamim 76, Shakib 51, Cremer 4-32, Jarvis 3-42) beat Zimbabwe 125 (Raza 39, Shakib 3-32, Mustafizur 2-16, Sunzamul 2-28) by 91 runs
Live scorecard and ball-by-ball details
Zimbabwe made a complete hash of their 217-run chase against Bangladesh in Mirpur, as they were bowled out for 125 and lost by 91 runs. In the process, they also lost control of their path to the tri-series final. Sri Lanka now have a chance to overtake them on the table if they beat the home side in the last league game on Thursday.
Bangladesh's spinners and medium-pacers combined impressively to bowl Zimbabwe out in 36.3 overs, helping their side to a third consecutive win with a bonus point. This was Bangladesh's lowest total in a win against Zimbabwe. The win was also Mashrafe Mortaza's 30th as Bangladesh captain, making him the most successful in terms of wins. He overtook Habibul Bashar's 29 wins.
Shakib Al Hasan took three wickets, like he had in the two previous games, while there were two each for Mortaza, Sunzamul Islam and Mustafizur Rahman. Shakib made a fifty in the first innings as well, adding 106 for the second wicket with Man of the Match Tamim Iqbal, who scored his third fifty in a row.
Mashrafe and Shakib hurt Zimbabwe's chances by taking four wickets in the first 10 overs. Hamilton Masakadza edged Mashrafe to Sabbir Rahman in the fourth over before Shakib dismissed Solomon Mire and Brendan Taylor off successive balls in the seventh over. Mire had missed a long-hop that kept low, while Taylor played back to a fullish delivery first ball to be trapped in front.
Craig Ervine's poor form continued when he edged Mashrafe to slip, for the third time in a row, where Sabbir took a sharp catch. His 11 in this innings took him to 15 runs in four innings in the tri-series.
Sikandar Raza and Peter Moor held back the home bowlers for 13.1 overs, but Sunzamul Islam struck two blows in as many deliveries in the 23rd over. Moor and Malcolm Waller were both given out leg-before, with the latter using up the review.
Raza and Cremer tried mending the situation for a while but that didn't last long either. Raza, who had struck two fours and a dismissive six during the steady fall of wickets, hammered Mustafizur down the ground for his fourth boundary before playing on to his stumps in the same over to end all hopes for Zimbabwe. Shakib added a third before Mustafizur closed out the innings.
It wasn't just Zimbabwe who struggled against spin. Graeme Cremer took four wickets. The three Zimbabwe spinners - Cremer, Raza and Waller - gave away just four boundaries in 27 overs between them, and gave away runs at 3.81 per over. Medium-pacer Kyle Jarvis chipped in with three wickets.
Even during the 106-run second wicket stand between Shakib and Tamim, Zimbabwe's spinners had a major say. The pair couldn't find any boundaries in one phase of their partnership. That phase lasted 12.2 overs in a partnership of 25 overs. Raza, Cremer and Waller put the brakes on with their accuracy and the slow pitch too played its part.
Tamim managed to reach two milestones during this time - he first became the highest scorer in a single venue in ODIs and then when he moved to 66, he became the first Bangladeshi to reach 6,000 ODI runs.
There was hardly any acceleration during the innings and when they made an effort, they ended up giving away their wickets. Shakib was stumped trying to charge Raza before Mushfiqur and Mahmudullah fell to Cremer in quick succession. Then, Tamim was stumped for 76 off 105 balls off a Cremer googly, before Mashrafe fell to give the Zimbabwe's captain his 100th wicket in ODIs.
Sunzamul, Mustafizur and Rubel Hossain added 45 runs together in the last 7.4 overs to frustrate Zimbabwe and used the momentum to good effect when they came out to bowl.
Mohammad Isam is ESPNcricinfo's Bangladesh correspondent. @isam84