Sri Lanka 148 for 4 (Dhananjaya de Silva 66*, Mujeeb 2-24) beat Afghanistan 144 for 8 (Hasaranga 3-13) by six wickets
Brisbane: Sri Lanka kept their semi-final hopes alive with a six-wicket win over Afghanistan at the Men's T20 World Cup in Brisbane.
Spinner Wanindu Hasaranga took 3-13 as Sri Lanka restricted Afghanistan to 144-8 despite another sloppy performance in the field.
Dhananjaya de Silva's unbeaten 66 then steered Sri Lanka to their target with nine balls to spare at the Gabba.
Afghanistan, whose two previous games were washed out, have been eliminated.
Sri Lanka need to beat England and for Afghanistan to beat Australia in order to qualify for the semis.
After winning the toss and choosing to bat, Afghanistan openers Rahmanullah Gurbaz and Usman Ghani added 42 for the first wicket as they capitalised on some loose bowling and fielding errors.
But the introduction of Hasaranga changed the course of the game as he applied the pressure and did not concede a boundary in four overs.
It was a below-par total and on a pitch with large boundaries, Sri Lanka made light work of the chase.
De Silva eased the nerves after opener Pathum Nissanka fell early, batting calmly and eliminating the threat of Afghanistan spinners Rashid Khan and Mujeeb ur-Rahman, who took two wickets each.
But there are concerns for Afghanistan ahead of their final game as Rashid Khan limped off with a leg injury towards the end of Sri Lanka's chase.
Afghanistan play Australia in Adelaide on Friday, while Sri Lanka face England in Sydney on Saturday.