Zimbabwe 253 for 4 (Wiliams 77*, Sibanda 49, Shafiul 2-51) beat Bangladesh 252 for 9 (Razzak 53*, Chigumbura 3-39) by six wickets
Scorecard and ball-by-ball details

Sean Williams's career-best effort guided the Zimbabwe chase to a successful finish, after Vusi Sibanda laid the foundation. The home side levelled the series 1-1, making the third and final match of the series the decider. The six-wicket win also broke a seven-match losing streak in ODIs, Zimbabwe having won their last game in October 2011, coincidentally at the Queens Sports Club in Bulawayo.

Bangladesh had been struggling at 185 for 7 in the 44th over but an unexpected hitting spree from left-arm spinner Abdur Razzak, steered Bangladesh past 200 and then, unbelievably, past 250. He slammed five sixes in his maiden ODI fifty, which came off just 21 balls to equal the Bangladesh record for the quickest half-century.

That left Zimbabwe needing to dig deep but Williams was up to the challenge. He struck his eleventh half-century to finish unbeaten on 77 off 74 balls as Zimbabwe overhauled a fairly stiff target. He was not entirely attacking, but did bring out the big shots whenever the opportunity arose or a boundary was required. He struck five fours and a six, powered over square-leg. The boundaries came through pull shots, a straight drive and even a reverse-sweep slammed through regulation cover.

Malcolm Waller played a great foil to Williams, contributing 39 off 50 balls with four boundaries. His calmness in a nervous chase also helped, as he played mostly straight and used the crease very well. Williams and Waller added 86 after Brendan Taylor was dismissed in the 35th over, scoring at 6.29. They were mostly calm during the second Powerplay overs that followed immediately, taking just 29 runs as they kept up with the required run-rate.

That was the third of three mid-sized partnerships on which the win was built. The first of the three was between Sibanda and Sikandar Raza for the second wicket. The pair added 65 in just 12.2 overs, blunting the pace bowlers. They struck ten boundaries, Sibanda hammering seven in his 51-ball 49 which forced Mushfiqur Rahim to use five bowers in the first 12 overs. Raza was attacking against pace, hitting three boundaries in his 36-ball 23. But the newcomer playing only his second ODI struggled to get the left-arm spinners away.

It was the Razzak and Shakib Al Hasan bowling spell which slowed these two down, with Sibanda's falling lbw to Shakib. Four balls after he was dismissed, Raza followed suit as he chipped an easy catch to midwicket off Shafiul Islam.

Taylor and Williams then batted slowly, quite deliberately so. They added 73 for the fourth wicket, which was vital as they were 94 for 3 in the 18th over when Raza was dismissed. Taylor made 37 off 60 balls. The Bangladesh bowlers were ordinary, perhaps for the first time on tour as they were found out by a very good batting track.

They couldn't back up Razzak's last-ditch effort with the bat. He struck five sixes, one of which was hit out of the ground, in his 22-ball 53. Razzak's innings, though, only masked how poorly some of the top- and middle-order batsmen performed.

The openers Tamim Iqbal and Mohammad Ashraful didn't reach double figures while the new No. 3 Mominul Haque struggled to work the ball around, and play his natural game. Mushfiqur made 26 in quick time but fell leg-before, while Nasir Hossain was constricted by some good field placements by the Zimbabwe captain Brendan Taylor.

Once again, Bangladesh were at the wrong end of a poor umpiring decision. Shakib was adjudged leg-before though the ball looked to be heading down the leg-side, and there was a hint of an inside-edge as well. His reaction was almost violent, slamming the bat on to his pads. It also accidentally touched Taylor's pad as he walked to celebrate with Prosper Utseya, and Shakib apologised immediately.

Until Razzak went after them, the Zimbabwe bowlers were more disciplined than in the first game, when they conceded 18 wides. The return of Kyle Jarvis made the difference, injecting much needed verve into the attack. He was poor towards the end, though, conceding 17 runs in the last over.

The May 8 finale would be the perfect end to an erratic but entertaining series which has seen some excellent fightbacks from both sides.

Mohammad Isam is ESPNcricinfo's Bangladesh correspondent. He tweets here