Bangladesh 242 for 7 (Shakib 96*, Saifuddin 28*, Jongwe 2-46) beat Zimbabwe 240 for 9 (Madhevere 56, Taylor 46, Shoriful 4-46) by three wickets
Shakib Al Hasan put on a masterclass with his unbeaten 96 in a nervy chase against Zimbabwe, that ended up with a three-wicket win for Bangladesh in Harare. It clinched the series for the visitors in a contest that was closer than it looked on TV due to the lack of fans at the Harare Sports Club.
Shakib endured two batting collapses at the other end but kept his nerve during the 69-run unbroken eighth-wicket stand with Mohammad Saifuddin. They got together with the score on 173 for 7 in the 39th over, focusing only on risk-free ones and twos, and the odd three. The home side were on the other end of the nerves scale: substitute Milton Shumba missed an easy run-out chance with Saifuddin stranded at the non-striker's end, while Regis Chakabva and Richard Ngarava dropped difficult catches.
Bangladesh only scored three boundaries in the last 19 overs of their innings, but it was enough to turn the game on its head. Their effort neutralised all the good work done by Wessley Madhevere and Sikandar Raza, who put on a superb all-round show. Both took a wicket each in their tight spells, having already taken superb catches at point, and rescued their side with a 63-run sixth-wicket stand.
This was only Shakib's second fifty this year, but it came just a day after he had taken a five-wicket haul in Bangladesh's 155-run win in the first ODI of the series. Saifuddin too proved his worth as a lower-order batter, not with his big hits, but by keeping his head in Bangladesh's first win in a chase since the 2019 World Cup.
They got off to a boundary-heavy start, as captain Tamim Iqbal and Liton Das struck four boundaries each during their 39-run opening stand. Luke Jongwe ended the partnership by getting Iqbal to cut the ball, only for Raza to take a superb catch at backward point.
The visitors slipped to 74 for 4 in the next eight overs when Richard Ngarava got one to hurry on Das who popped a catch to mid-on. Jongwe struck again when Mohammad Mithun cut one to point where Madhevere dived to his left to take the catch.
Mosaddek Hossain was the fourth wicket - the most unnecessary one of the lot - when he tried to sneak a bye after Shakib left a Ngarava wide. Wicketkeeper Regis Chakabva struck with his underarm roll, as Bangladesh fell into further trouble.
But as has happened quite regularly this year, Mahmudullah came to the rescue after four wickets were down cheaply. This time too, he added 55 runs for the fifth wicket with Shakib, having struck three fours in his 26. But Blessing Muzarabani got him caught behind off the first ball of his second spell, before Mehidy Hasan Miraz, curiously given a promotion above Afif Hossain, fell to a half-hearted slog-sweep against Madhevere. Afif himself got stumped off Raza, a point from which it seemed Bangladesh wouldn't turn the tide, but Saifuddin and Shakib had other plans in their mind.
Earlier, Zimbabwe's batters couldn't convert their starts after captain Brendan Taylor said at the toss that he decided to bat first to put less pressure on his young batters. Madhevere's 56, and his stand with Raza - the latter making a comeback after a shoulder surgery - lifted them to the 200-plus score.
But it was Taylor's dismissal in the 25th over that gave Bangladesh the edge. Zimbabwe did bat the full quota of 50 overs, but it was clear that Madhevere, Dion Myers and Raza had to be mindful of keeping wickets intact.
Madhevere struck five fours and a six in his 56 off 63 balls. Taylor made 46 while Chakabva, Myers and Raza got out in the thirties, and quite predictably, there was very little contribution from their bottom four batters.
Once again, Zimbabwe couldn't quite take advantage of being in good positions in the match, and Bangladesh showed their experience despite getting into difficult positions themselves.

Mohammad Isam is ESPNcricinfo's Bangladesh correspondent. @isam84