Openers Upul Tharanga (39) and Danushka Gunathilaka (35) sped to the target 83 in just 11.5 overs to seal the win for the islanders.
"This is what we're capable of," said Sri Lankan captain Dinesh Chandimal as he celebrated the emphatic 10-wicket win that left Zimbabwe in third place in the series and ensured Sri Lanka another match against Bangladesh in Saturday's final.
Sri Lanka had to win to remain in the competition and, coming out of their worst year in international cricket, completed the task in style.
Bangladesh skipper Mashrafe Mortaza won the toss and opted to bat but soon regretted his move. Mushfiqur Rahim made 26 but Sabbir Rahman was the only other batsman to reach double figures, with just 10 runs.
Lakmal picked up his three wickets -- openers Tamim Iqbal and Anamul Haque, and number five Mahmudullah -- for just 21 runs and knocked out the upper order. Thisara Perera, Dushmantha Chameera and Lakshan Sandakan each claimed two wickets.
Bangladesh, who had secured emphatic wins in their past three games, were all out for 82 in 24 overs and clearly stunned.
Gunathilaka, with three sixes and two fours, and Tharanga romped to victory without the loss of a wicket against Bangladesh's lacklustre bowlers.
Chandimal highlighted Sri Lanka's planning for this game.
"We wanted to attack them," said the captain. "We can control when we're fielding. Especially Suranga bowled really well at the start. Upul and Danushka finished it really well."
Bangladesh skipper Mortaza admitted his side had suffered a wake-up call.
"Good thing that our middle order has been exposed," he said. "Hopefully they'll find out their mistakes."
Mortaza said he could not blame the wicket and that Bangladesh should have scored at least 180-200.
"Hopefully the boys will deliver in the final," he said.
bangladeshcricketDanushka GunathilakaDinesh Chandimalmashrafe mortazaSandakansri lankaSurnga Lakmaltri-seriesupul tharanga
First Published: January 25, 2018, 4:57 PM IST