Dhananjaya de Silva scored an unbeaten 66 as Sri Lanka kept their slim Twenty20 World Cup hopes alive with a six-wicket win over Afghanistan at the Gabba in Brisbane on Tuesday.
The Asia Cup champions moved to four points in Group 1 and can still make the semi-finals, but they need other results to go their way.
Group 1 leaders New Zealand were playing England, who have three points, in a later game at the Gabba on Tuesday after Australia beat Ireland on Monday to move level on five points at the top but behind the Black Caps on net run rate.
The loss means Afghanistan are eliminated as they cannot make the semi-finals with one group match against Australia remaining after having two washouts and a opening defeat to England.
Afghanistan captain Mohammad Nabi won the toss and chose to bat but Sri Lanka restricted them to 144-8, thanks largely to a fine spell from leg-spinner and player of the match Wanindu Hasaranga.
The Sri Lankan run chase got off to a poor start when Mujeeb Ur Rahman spun one back to bowl Pathum Nissanka for 10.
'We fell short'
Kusal Mendis and de Silva recovered and took the score to 46 before Afghanistan trump card, leg-spinner Rashid Khan, drew a top edge from Mendis, giving keeper Rahmanullah Gurbaz a simple catch.
Khan took the next wicket when Charith Asalanka was caught by Azmat Omarzai on the boundary for 19 but by then Sri Lanka had reached 100 and had taken control of the run chase.
De Silva played a perfectly measured innings, scoring his stylish 66 from 42 deliveries to guide the Sri Lankans home.
Sri Lanka captain Dasun Shanaka was pleased with his side's efforts with both bat and ball.
“I think we found some consistency today and it is important to continue it in the next game,” Shanaka said. “The other games are beyond our control, but the aim is to win the next game with a healthy run rate.”
Hasaranga took 3-13 during Afghanistan's innings, not conceding a boundary in his four-over spell.
Afghanistan batted well in patches and looked on course for a big score, but every time they began to open up, Sri Lanka's bowlers were able to take key wickers to keep them in check.
Despite six of Afghanistan's batsmen getting a good start to their innings, none was able to convert to a big score with Usman Ghani's 27 being the best.
The target of 145 was at least 20 runs short of a competitive total and Sri Lanka cruised home with nine balls to spare when De Silva hit he winning four to take them to 148-4.
“We had a good start in the powerplay but did not keep the momentum till the end,” Nabi said of the Afghanistan effort in the field.
“We tried to put up a good score but the pitch was too slow and we fell short.
“We did not bowl the right lines and lengths. “