Shakib, who made his Test comeback after serving a three-month ban for poor discipline, led a three-pronged spin attack that strangled Zimbabwe on the slow wicket at the Sher-e-Bangla National Stadium.
Debutant leg-spinner Jubair Hossain claimed 2-58 and left-arm spinner Taijul Islam finished with 1-42. Opener Sikander Raza was top-scorer for Zimbabwe with 51.
Bangladesh were 27 for one in reply by stumps with Shamsur Rahman (eight) and Mominul Haque (14) at the crease.
Opener Tamim Iqbal was dismissed for five, caught by Hamilton Masakadza at second slip off Tinashe Panyangara.
Raza shared a 52-run stand for the fourth wicket with skipper Brendan Taylor (28), but none of the other batsmen settled in to build a partnership after the tourists won the toss and elected to bat.
Shahadat Hossain accounted for the only wicket that fell to a seamer, having Vusi Sibanda caught by wicketkeeper Mushfiqur Rahim in the first over of the match.
Bangladesh introduced spin in the eighth over and were rewarded almost immediately as Shakib had Masakadza caught by Jubair at long off for 13.
Zimbabwe went in at lunch on a respectable 77-2 but Jubair, who at 19 became the first specialist leg-spinner to play Test cricket for Bangladesh, dismissed Taylor and Raza in quick succession after the break.
Shakib removed Panyangara (eight) to complete his 12th five-wicket haul and then added debutant Tafadzwa Kamungozi to his tally to wrap up the Zimbabwe innings.
Zimbabwe’s tour of the South Asian nation features three Tests and five one-day internationals.-AFP