Electing to bat, Sri Lanka wobbled initially as they were reduced to 83 for three in the 21st century, but recovered to 157 for four in the 37th over courtesy a 74-run stand between wicketkeeper Sangakkara (76) and Dinesh Chandimal (26).
The Afghan seamers struck back after choking the runs in the middle overs as Sri Lanka were reduced to 184 for six in the 42nd over after being 157 for three in the 37th over, thereby adding just 27 runs at the expense of four wickets in five overs.
Afghanistan, who beat Bangladesh in their previous match two days ago in their best-ever result till date, used as many as eight bowlers and were initially able to restrict the Sri Lankan batsmen who have been in fine form in the tournament, having helped their side win both their earlier matches.
Sangakkara continued with his fine form in the tournament, top-scoring with a 102-ball knock, which was studded with four sixes and one six. He had scored 67 (against Pakistan) and 103 (against India) in Sri Lanka's earlier two games.