The win kept Nepal's slim hopes of qualifying for the Super-10. Nepal, who have two wins from three matches, are second in the table behind Bangladesh, who take on Hong Kong in their last qualification-round fixture later in the day. (Agencies)
Put into bat, Nepal posted a challenging 141 for five in 20 overs before their bowlers rattled the Afghan top-order to restrict them to 132 for nine at Zahur Ahmed Chowdhury Stadium.
Opener Khakurel made 56 off 53 balls and shared a 76-run stand in 9.1 overs with Sharad Vesawkar (37) for the fourth-wicket to put up a fighting total.
Medium-pacer Jitendra Mukhiya (3/18) was pick of the bowlers for Nepal as he bowled four economical overs that included three wickets.
Sompal Kami (2/32) and Shakti Gauchan (2/25) were also instrumental in pegging back the Afghans.
Afghanistan were tottering at 50 for five in nine overs before Shafiqullah (36 off 32) and Asghar Stanikzai (49 off 36) raised hopes of overhauling the target.
But regular strikes from bowlers never allowed the game to slip away from Nepal.
Stanikzai smashed four boundaries and a six in a late blitz, including three fours in the final over, but the effort wasn't enough to take Afghanistan home.
Earlier, wicketkeeper-batsman Khakurel hit six fours and a six enroute to his maiden T20 fifty while Vesawkar's 32-ball knock was laced with five boundaries.
Gyanendra Malla chipped in with 22 off 13 balls after a wobbly start by the Nepalese side.
Shapoor Zadran (2/19) was the most economical bowler for Afghanistan while Dawlat Zadran (1/23), Mirwais Ashraf (1/14) and Mohammad Nabi (1/25) contributed with one wicket each.
Nepal, who have a net run rate of +0.933 as compared to Bangladesh's +2.686, would be hoping for a huge upset when Hong Kong take on the hosts in the evening.
The win kept Nepal's slim hopes of qualifying for the Super-10. Nepal, who have two wins from three matches, are second in the table behind Bangladesh, who take on Hong Kong in their last qualification-round fixture later in the day.