Stuart Matsikenyeri was the hero for Zimbabwe, top-scoring with 89 in a sixth-wicket stand of 114 with Elton Chigumbara to resurrect the home side's hopes after they had collapsed to 50-4.
Matsikenyeri's performance helped Zimbabwe overhaul Bangladesh's total of 247 with five balls to spare, finishing on 248 for 8.
Chigumbara hit the winning runs for Zimbabwe, smashing Shahadat Hossain over midwicket for boundary to the delight of the home crowd to finish on 70.
Earlier, Bangladesh had overcome a nervous start to reach 246 for 7, with opener Shahriar Nafees top-scoring with 78.
The dreadlocked paceman Tawanda Mupariwa got Zimbabwe off to a flying start by removing Javed Omar for eight and Aftab Ahmed for nought with both men caught by wicketkeeper Brendan Taylor.
But Nafees steadied the ship sharing two fifty-plus stands with Mohammad Ashraful (25) and Habibul Bashar (40).
Nafees's innings eventually came to an end when he was bowled by Ed Rainsford trying to force the pace at 188-6.
Mohammad Rafique added a brisk 39 to push the score towards respectability with his innings highlighted by two huge sixes over deep fine leg and long-off.