Bangladesh had appeared well set to leave India chasing a sizeable target, but instead Zaheer snared four wickets in eight balls as Bangladesh – nicely poised on 290 for three at one stage – were bowled out for 312, a lead of just one run over India's first-innings total of 544 for eight declared.
India then knocked off the two runs required to win without fuss, completing an astonishing win with a day and a half to spare.
Night-watchman Shahadat Hossain had frustrated the visitors with a stroke-filled 40 and Mohammad Ashraful made 25, the pair batting well past the first drinks interval and adding 68 for the fourth wicket.
But after Shahadat and Ashraful were dismissed in consecutive overs, by Harbhajan Singh and Pragyan Ojha respectively, a collapse ensued which ended with Zaheer collecting the last four wickets to finish with a career-best seven for 87 – and a ten-wicket haul in the match.
Virender Sehwag and Gautam Gambhir were at the crease when the second ball of Bangla captain Shakib Al Hasan's first over went for two byes - and the Indian win.