After opting to bowl first, Bangladesh initially made early inroads, but Zimbabwe recovered to post a competitive 170 for 6, thanks to valuable contributions throughout the innings.
Brian Bennett provided a brisk start with 44 off 30 balls, striking six fours and a six before becoming one of Nahid Rana's four victims.
Dion Myers (20), captain Sikandar Raza (20) and Ryan Burl (30 not out) kept the scoreboard ticking, while Brad Evans' unbeaten 19 from just 10 deliveries, featuring four boundaries, lifted Zimbabwe to a challenging total in the closing overs.
Nahid was the standout bowler for Bangladesh, finishing with 4 for 26, while Mohammad Saifuddin claimed two wickets. However, Bangladesh leaked 12 extras, including seven wides, which proved costly.
Bangladesh's chase never gathered momentum as the top order collapsed inside the powerplay.
Richard Ngarava struck twice early to remove Saif Hassan and Tanzid Hasan before Blessing Muzarabani dismissed Parvez Hossain Emon, leaving the visitors struggling.
Stand-in captain Towhid Hridoy managed only 14 before Yasir Ali fought back with a defiant 54 off 38 balls, hitting two fours and three sixes. Mahedi Hasan added 19, but Bangladesh kept losing wickets at regular intervals.
Zimbabwe's pace attack proved too strong, with Ngarava and Muzarabani sharing eight wickets between them.
Ngarava returned figures of 4 for 26, while Muzarabani claimed 4 for 17 to dismantle Bangladesh's batting lineup. Milton Shumba chipped in with one wicket as Bangladesh were bowled out for 138 in 19 overs.
The victory extends Zimbabwe's recent dominance over Bangladesh after their 2-1 ODI series triumph and gives the hosts a 1-0 advantage heading into the remaining two T20Is.