Set a target of 250, the tourists suffered a late collapse to be all out for 245.
Wicket-keeper batsman Tatenda Taibu top-scored for the hosts with 83, and his 142-run partnership with Hamilton.
Hamilton, who made a 74 off a 100 balls, powered Zimbabwe to a competitive score.
Bangladesh started the chase well enough with a 50-run stand for the opening wicket but kept losing wickets too regularly to consolidate.
Zimbabwe: B. Taylor c Siddique b Shafiul 4, V. Sibanda c Kayes b Rubel 27, H. Masakadza b Rubel 74, T. Taibu c Rubel b Nazmul 83, C. Ervine st. Mushfiqur b Mahmudullah 18, E. Chigumbura c Rubel b Shakib 31, F. Mutizwa lbw b Shakib 2, P. Utseya (not out) 4, K. Jarvis (not out) 1; Extras (b-1, lb-2, w-3): 6; Total (for seven wkts. in 50 overs): 250.
Fall of wickets: 1-14, 2-39, 3-181, 4-206, 5-217, 6-245, 7-245.
Bangladesh bowling: Shafiul 10-2-40-1, Nazmul 9-1-34-1, Rubel 10-0-41-2, Nasir 6-0-37-0, Mahmudullah 9-1-49-1, Shakib 6-0-46-2.
Bangladesh: T. Iqbal (run out) 44, I. Kayes lbw b Utseya 16, J. Siddique c & b Utseya 12, Mushfiqur c Sibanda b Mpofu 101, Shakib c & b Utseya 19, Shuvagoto Hom (run out) 32, Mahmudullah c Masakadza b Vitori 14, Nasir Hossain c Taylor b Mpofu 0, Shafiul b Jarvis 0, Rubel Hossain b Jarvis 1, Nazmul Hossain (not out) 0; Extras (lb-4, w-2): 6; Total (in 49.2 overs): 245.
Fall of wickets: 1-50, 2-66, 3-91, 4-124, 5-185, 6-229, 7-229, 8-235, 9-243.
Zimbabwe bowling: Vitori 10-0-45-1, Jarvis 10-0-52-2, Mpofu 9.2-1-43-2, Utseya 10-1-47-3, Chigumbura 6-0-37-0, Masakadza 4-0-17-0.