Taijul Islam became the first bowler to take a hat-trick on his one-day international debut as Bangladesh went in search of a series whitewash against Zimbabwe at Mirpur.
The 22-year-old, who only made his Test debut in September, began his second spell with Zimbabwe on 120 for five and removed Solomon Mire with his first ball back – but the greater drama was yet to come.
Taijul ousted Tinashe Panyangara with the last ball of the over and when he returned he accounted for John Nyumbu and Tendai Chatara to complete his hat-trick.
That saw Zimbabwe slump to 124 for nine with Taijul claiming four for 11 in a spectacular collapse as the tourists went from 95 for one to 128 all out.
Zimbabwe had chased in all four of the previous matches in this series, twice after winning the toss, but decided to bat on Monday and Hamilton Masakadza led the way as they reached 60 for one after 10 overs.
Sikandar Raza was the man to go for nine, chasing a wide one from Mashrafe Mortaza and edging to Mushfiqur Rahim behind the stumps.
Vusi Sibanda survived a drop but the tourists had good momentum and Masakadza brought up his big-hitting half-century off 48 balls with three sixes and five fours.
The 31-year-old would add just two more, though, as he attempted to drive at a Jubair Hossain delivery and was clean-bowled to end a partnership of 79 and start the collapse.
The Zimbabwe hundred came up in the 20th over but Brendan Taylor fell for nine in the next, Shakib Al Hasan getting one to clip off stump.
Shakib soon had another victim when Sibanda (37) pulled him to midwicket where Mortaza held a smart diving catch and when Jubair bowled Timycen Maruma for just one, Zimbabwe had gone from 95 for one to 112 for five.
Taijul had his first wicket as he removed Mire (nine) lbw and he bowled Panyangara for a duck with the final ball of the over.
Nyumbu (three) was lbw with the first delivery of the 29th over to leave Taijul on his hat-trick and when Chatara completely misjudged a sweep first ball, the delivery hit his off-stump to spark the celebrations.
Tafadzwa Kamungozi exited for two to end the innings and Zimbabwe had lost nine wickets for just 33 runs.