Defending a modest total of 115 for five on a bowler-friendly surface, Afghan captain Rashid Khan belied three rain stoppages, a slippery ball and a revised target of 114 off 19 overs to take four for 23 as Bangladesh, who themselves harboured faint hopes of making the last four, were dismissed for 105 off 17.5 overs.
An unbeaten 54 from opener Litton Das was threatening to take Bangladesh to victory and earn Australia the last semi-final spot on net run-rate.
But pacer Naveenul Haq claimed the last two wickets — Taskin Ahmed and Mustafizur Rahman — off consecutive deliveries in the penultimate over of the match to trigger delirious Afghan celebrations.
With India defeating Australia earlier in the day and advancing to the second semi-final against England in Guyana on Thursday, this result assured the Afghans of second spot in the group and eliminated the Aussies together with the Bangladeshis.
Afghanistan will now face South Africa in the first semi-final in Trinidad on Wednesday.