Bairstow's unbeaten 108 off 48 balls, with eight fours and nine sixes, see Punjab secure the win with eight balls to spare
In Bangladesh’s 224 runs, skipper Mahmudullah Riyad contributed a stunning century, the second in his career. That helped visitors post a challenging target for the tourists. He remained unbeaten at 101.
His first century was against New Zealand at Hamilton in February 2010.
The hosts opted against enforcing the follow-on despite their 218-run first innings lead.
Debutant Mohammad Mithun scored 67 runs and built up an important partnership with the team leader to achieve a challenging total.
Zimbabwe are leading the two-match series 1-0 and need at least a draw to win their first Test series in seven years.