After a strong start, with 75 runs in just 9 overs, Afghanistan lost wickets in a heap.
Afif Hossain struck with a double-wicket maiden to bring Bangladesh back into the contest. Afghanistan lost 7-39 to be restricted to just 138/7 in 20 overs.
Bangladesh lost their openers early as Bangladesh were reduced to 12/2 early in the chase.
Shakib Al Hasan revived the chase with Mushfiqur Rahim with a fifty-run stand.
Shakib Al Hasan remained unbeaten on 70 to take Bangladesh over the line with four wickets to spare.