Al Hasan was unbeaten on 105, off only 69 deliveries, including 15 fours and three sizes.
Bangladesh’s left-arm spinner Abdur Razzak took five one-day wickets for just the second time to bowl out Zimbabwe for 219.
Zimbabwe made a steady start after winning the toss at Shere-e-Bangla National Stadium but lost regular wickets once stand-in captain Hamilton Masakadza was trapped leg-before-wicket for 34 while trying to sweep Naeem Islam.
Three wickets then fell with the score on 96 and Zimbabwe never fully recovered, giving Bangladesh a good chance to draw level in the series.
Razzak took wickets all down the order to finish with a career-best 5-29.
Bangladesh did the real damage to Zimbabwe’s batting order in the 21st and 22nd overs. Chamu Chibhabha was stumped by wicketkeeper Mushfiqur Rahim on 39 for one of Mohammad Ashraful’s two wickets, Brendan Taylor was bowled by Razzak and Charles Coventry was caught in the slips, also off Razzak.
No. 7 Malcolm Waller replaced the injured Prosper Utseya and top-scored with 40 but he too fell to Razzak.
Ashraful finished with 2-28, while Islam took 2-43.
Tatenda Taibu hit 38, the only other batsman to get past 25. ––AP.