Bangladesh won an absolute humdinger of a match in Harare by three wickets and took the three-match ODI series 2-0.
This was Bangladesh's first ODI series victory in Zimbabwe in 12 years.
Bangladesh were tottering at 176 for seven at one stage but Shakib Al Hasan's magnificent knock of undefeated 96 helped the visitors get over the line.
Zimbabwe skipper Brendan Taylor won the toss and decided to bat first after their decision to field first in the first match backfired.
The home side brought in Sikandar Raza and Tinashe Kamunhukamwe in place of injured Ryan Burl and Timycen Maruma.
Bangladesh didn't break the winning combination.
In-form pacer Taskin Ahmed struck in the very first over as Kamunhukamwe hit the ball straight to the fielder while attempting a cut shot.
His opening partner Tadiwanashe Marumani was dropped at third man by Mohammad Saifuddin off Taskin in the fifth over.
But this didn't frustrate Bangladesh for too long as Mehidy Hasan Miraz sent back Marumani in the next over.
Despite losing two wickets, Brendan Taylor and Regis Chakbva batted with positive intent.
They put on 47 in 9.5 overs before the latter was bowled by Shakib Al Hasan.
Taylor was in good nick and hit a few cracking boundaries including a whip off Shoriful Islam that went all the way.
Taylor got himself a lucky boundary off Shoriful in the 25th over but the left-arm seamer had his man in the next ball.
Taylor would consider himself very unlucky as he got himself out in a bizarre way.
He missed a ramp and swung the bat casually after shadow-practising the shot.
But the bat clipped the stumps and bails were dislodged.
Taylor scored 46 off 57 balls. When he got out, Zimbabwe were 114 for four.
Wesley Madhevere walked out to bat at number six and added 35 with Dion Myers.
Myers fell in the 33rd over against the run of play and his dismissal put the home side under a bit of pressure at 146 for five.
Sikandar Raza was slotted at number seven and he provided good support to Madhevere who was the aggressor in the seventh wicket partnership.
Madhevere played very well through the off-side, drove nicely on the up, pulled well and used his feet against spinners.
The youngster picked up his third ODI fifty and looked threatening.
But Shoriful came back and deceived him with a slower one.
Madhevere was early in the shot and Tamim Iqbal took a spectacular catch running and diving forward.
Madhevere was dismissed for a well-made 63-ball-56. Before going back to the pavilion, Madhevere stitched an important partnership of 63 off 70 balls with Raza.
Shoriful got two more quick wickets, dismissing Luke Jongwe and Blessing Muzarabani.
He registered his best bowling figures of four for 46.
Sikandar Raza hit two boundaries in the 48th over off Saifuddin but the fast bowler had the last laugh.
Zimbabwe eventually reached 240 for nine after 50 overs.
Bangladesh had previously chased more than 240 successfully only once in Harare.
In reply, Bangladesh openers were off to a decent start.
Tamim Iqbal smashed a few beautiful shots before a stunning catch from Sikandar Raza ended his stay in the crease.
Tamim scored 20 and got out in the 10th over.
Liton Das couldn't convert the start too, giving his wicket away in the 13th over.
Bangladesh were 46 for two when Liton perished.
Bangladesh were again guilty of not building partnerships and lost four wickets inside 80 runs like the first match.
Mohammad Mithun tried to play a shot away from the body through the off-side but an alert Madhevere pulled off a beauty at cover-point.
Mosaddek Hossain was unfortunately run-out courtesy of a great piece of fielding from keeper Chakabva who hit the stumps. His dismissal left Bangladesh tottering at 75 for four.
Mahmudullah and Shakib put on a decent partnership of 55 for the fifth wicket but Muzarabani dented the Tigers' resistance by picking up the important wicket of the latter.
Shakib got to his fifty in the 30th over off just 59 balls.
He also completed the milestone of 12000 international runs in this match and became the fastest and only the second all-rounder to achieve the double of 12000 runs and 500 wickets.
Bangladesh were in further trouble when they lost Miraz in the 32nd over.
Afif Hossain and Shakib added 29 off 39 balls before the former was stumped by Chakabva off Raza. Bangladesh still required 68 off 11.3 overs with only three wickets remaining.
Saifuddin came out to bat at number nine and almost got himself out not once, but twice. But he hung in there and helped Shakib take control.
Both of them played very smartly and kept on taking singles and running twos and brought the equation down to seven off seven balls.
Saifuddin picked up a streaky boundary off Tendai Chatara in the last ball of the penultimate over to propel Bangladesh to safety.
Shakib finished things off by a boundary through the third man area.
The southpaw remained unbeaten on 96 off 109 balls.
His masterful knock involved eight fours. Shakib added 69 off only 64 balls with Saifuddin and this turned out to be the difference between the two teams.
Shakib Al Hasan, for his match-winning knock and two wickets, was adjudged player of the match.
Meanwhile, Prime Minister Sheikh Hasina extended congratulations to the players, coaches and managers of the Bangladesh cricket team for winning the series.
The final match of the series will be held on Tuesday.