Shakib and opener Tamim Iqbal, who top-scored with 76, set up the victory as they shared 106 runs for the second wicket after Bangladesh elected to bat. The Zimbabwe spinners - Cremer, Sikandar Raza and Malcolm Waller - conceded just four boundaries in a total of 27 overs.
Mashrafe also fell cheaply, with a failed review, getting caught behind off Cremer who became the fifth Zimbabwean to reach 100 ODI wickets. Raza was the highest run-scorer for Zimbabwe, scoring 39 runs. However, Bangladesh bowlers made the small total look like a mountain with an impeccable effort. Kyle Jarvis, the paceman, took three wickets. Jarvis had Anamul Haque lbw in the third over, but Tamim and Shakib ensured a swift bounce back. Only Raza found ways to score runs and captain Cremer played a breezy knock to ignite a glimmer of hope in their camp. They bowled 15 extras in 50 overs.
"His participation in the rest of the Bangladesh tour will depend on medical advice", it added. Tamim needed 66 runs to bring up his 6,000 runs in ODIs and the southpaw got there in the first delivery of the 35th over with a single off Zimbabwe skipper Graeme Cremer.
Nicolas Otamendi has extended his City contract until 2022
The 32-year-old has featured in all 23 Premier League games this season, starting 22, and has racked up 212 City appearances overall - scoring 19 goals .
Bangladesh completely collapsed after Tamim's dismissal as they went from 163/5 to 196/9.
Sunzamul Islam and Mustafizur Rahman resisted Zimbabwe's charge with a 26-run ninth wicket stand before Mustafizur and Rubel Hossain scrambled together a further 20 runs to drag Bangladesh to some respectability. After winning this match this will clear that final will be held between these two teams and the next match between Sri Lanka and Bangladesh will be only a formality.
Zimbabwe may have lost the match, but they are still alive in the tournament.
Sri Lanka and Bangladesh meet in the last round-robin match on Thursday.