Bangladesh had a good start to the game as debutant Taijul Islam sent back Brendan Taylor with his very first delivery in T20Is.
But Zimbabwean skipper Hamilton Masakadza put up a 44-run stand with Craig Ervine, as the former wreaked havoc.
Masakadza took 18 runs of Taijul's third over before Ervine was caught at the boundary off Mustafizur Rahman.
In the very next over, Zimbabwe lost their skipper to Saifuddin as Sabbir Rahman took a good diving catch at mid-off.
Wickets began to crumble as Sean Williams gave an easy catch to Mosaddek off his own delivery before Timycen Maruma was run out in the next over.
But Ryan Burl and Tinotenda Mutombodzi solidified their position at the crease and accelerated in the later overs. Burl unleashed himself on Shakib in the 16th over as the Bangladesh skipper went for 30. Burl scored his fifty off 28 deliveries, and their 81-run stand took Zimbabwe to 144. Burl and Muombodzi was unbeaten on 57 and 27 runs respectively.
Shakib, Mustafiz, Saifuddin and Mosaddek picked up a wicket each.