Mahmudullah struck a quick-fire half-century as Bangladesh beat Zimbabwe by 39 runs to qualify for the final of their Twenty20 tri-series in Chattogram on Wednesday.
The hosts will face Afghanistan in the final on Tuesday in Dhaka, while Zimbabwe will finish their campaign against the same opponents on Friday.
Riding on Mahmudullah's 62 off 41 balls, Bangladesh posted 175-7 -- the side's highest total against Zimbabwe in Twenty20s -- before pacer Shafiul Islam and debutant leg-spinner Aminul Islam shared five wickets to bowl out Zimbabwe for 136.
Shafiul, playing his first Twenty20 international in nearly two years, claimed 3-36 while teenager Aminul also impressed, taking 2-18.
Mustafizur Rahman also took two wickets in the final over to finish with 2-38 as Bangladesh condemned Zimbabwe to their third consecutive defeat in the tournament, ending their chances of playing in the final.
Bangladesh took the upper hand in the game when Mohammad Saifuddin and Shakib Al Hasan struck in the first two overs before Shafiul reduced Zimbabwe to 8-3.
Zimbabwe soon slumped to 66-7, a position from where they could never recover despite some late blows by Richmond Mutumbami and Kyle Jarvis.
Mutumbami hit 54 off 32 balls, his maiden Twenty20 international fifty, with four fours and three sixes, while Jarvis added 27 off 20 balls, but they could never put Bangladesh under pressure.
Mahmudullah earlier led Bangladesh's batting charge with his fourth Twenty20 international fifty, which featured one four and five sixes.
Sent into bat first, opener Liton Das made 38 off 22 and put on 49 runs with debutant Najmul Hossain to give Bangladesh a positive start.
Neville Madziva took a stunning catch off Chris Mpofu at short third man to end Liton's innings and Bangladesh were soon 65-3.
Mahmudullah and Mushfiqur Rahim (32) added 78 for the fourth wicket to set up a possible score of close to 200 runs but Zimbabwe halted Bangladesh's progress with late strikes.
"We started well with the bat but couldn't finish the innings the way we wanted. That's an area we can improve. Bowlers backed it up brilliantly," said Bangladesh skipper Shakib.
Jarvis, who claimed 3-32, removed Mahmudullah and Mosaddek Hossain in consecutive deliveries in the final over to create a chance of a hat-trick.
Mohammad Saifuddin hit six runs off the final two balls to ensure Bangladesh posted a strong total.
Zimbabwe captain Hamilton Masakadza lamented his side's batting in the first 10 overs.
"If you lose half your side within 10 overs, you're always behind the game," he said.