Rashid scored a rapid unbeaten 32-ball 57 with eight fours and a six to lift Afghanistan to an imposing 255-7 after their captain Asghar Afghan won the toss and decided to bat at Sheikh Zayed Stadium.
Rashid, who finished with 2-13 in nine overs and effected a run out, claimed the prized wickets of Shakib Al Hasan (32) and Mahmudullah Riyad (27) as Bangladesh were bundled out for 119 in 42.1 overs.
It was Afghanistan’s second upset in the tournament following their 91-run win over Sri Lanka which sent the islanders crashing out in the first round.
Afghanistan next take on Pakistan in the double-header Super Four game in Abu Dhabi on Friday while title holders India meet Bangladesh in Dubai.
Afghanistan rocked the Bangladesh top four for just 43 runs before Shakib and Riyad added 36 but they were not spared by Rashid, who became the fastest bowler to 100 one-day wickets in 44 games earlier this year.
This was Bangladesh’s lowest total against Afghanistan by some distance — their previous lowest against the Afghans was 208 in Dhaka two years ago.
The whole Bangladesh innings had just five boundaries — two by Riyad and three by Mosaddek Hossain (26 not out).
Earlier, Hashmatullah Shahidi hit a 92-ball 58 with three fours to revive Afghanistan after they were jolted by left-arm spinner Shakib who finished with 4-42 in his ten overs.
Rashid used the long handle to the best effect, taking Afganistan past the 250-mark, adding 90 for an unbroken eighth wicket stand with Gulbadin Naib who made a 42 off 38 balls with five boundaries.