Bangladesh posted 269-8 in the three-match series opener in Bulawayo and Zimbabwe crumbled to 148 all out in reply in just 32.1 overs.
Hossain's 68 from 67 balls dug Bangladesh out of trouble at 94-4 and a lower-order contribution from Mahmudullah (36) and a hefty 32 extras from Zimbabwe's wayward bowlers helped the tourists to a solid total.
Zimbabwe's innings fell away rapidly after captain Brendan Taylor (33) and Hamilton Masakadza (38) were dismissed and the hosts never came close to threatening Bangladesh's score.
Rahman took 5-30 in nine outstanding overs to put Bangladesh ahead in the ODI contest.