Opting to bat after winning the toss, Afghanistan were all out for 249 in 50 over on a pitch that looked to be on the slower side, making stroke-play difficult.
Rahmat Shah top-scored for the minnows with a composed 72 off 90 balls, while pacer Thisara Perera was the most successful bowler for the islanders with figures of five for 55.
In reply, Sri Lanka were bundled out for 158 in 41.2 overs.
Afghanistan have had an impressive run so far in 2018, beating Zimbabwe and Ireland apart from winning the qualifiers to book a berth in next year's ICC World Cup.
At the the Sheikh Zayed Stadium, the Afghanistan cricket team made another emphatic statement.
In the past, batting has often let them down but once they closed in on 250, the spin-heavy Afghanistan fancied their chances against the struggling Sri Lankans, who simply caved in and threw away their wickets.
By the time their trump card Rashid Khan was introduced, Afghanistan had already taken two wickets, and the leg-spinner delivered immediately bowling out Kusal Perera, who made an unsuccessful attempt to unsettle the strike bowler.
Upul Tharanga, after having hung in there for his 64-ball 36, offered a simple catch at mid-off to leave Sri Lanka in a spot of bother at 88 for four.
A lot depended on skipper Angelo Mathews (22) but he too got out while trying to force the pace.
Thisara, after a successful outing with the ball, made 28 off 36 balls.
Mujeeb ur Rahman, Gulbadin Naib, Rashid and Mohammad Nabi picked up two wickets apiece for Afghanistan.
This was Sri Lanka's second straight loss in Group B, coming two days after the heavy defeat at the hands of Bangladesh.
Earlier, Rahmat Shah held the Afghan innings together before Thisara's five-wicket haul helped Sri Lanka bowl out Afghanistan.
Perera picked up his fourth five-for as Sri Lanka took seven wickets in the last eight overs of Afghanistan innings.
Afghanistan were off to a cautious start with the openers Mohammad Shahzad (34) and Ihsanullah Janat (45) putting on 57 runs in just under 12 overs.
Spinner Akila Dhananjaya made the first breakthrough when he had Shahzad trapped in front of the wicket. It was a loose shot and attempting to reverse sweep a length ball proved to be his undoing.
There was another half-century stand, between Ihsanullah and Shah, as the Afghanistan dressing room looked relaxed.
However, Sri Lanka found another wicket after the two batsmen added exactly 50 runs for the second wicket. Umpire Gregory Brathwaite was not impressed with Akila's shout for an lbw, prompting the Sri Lankans to go for a review, and got the decision in their favour.
Returning to the side after missing the tournament opener against Bangladesh, off-spinner Akila returned with tidy figures of 2/37 in his 10-overs spell on a wicket that played slow, making stroke-making difficult.
Skipper Asghar Afghan came to the middle, but his stay was short-lived as Shehan Jayasuriya foxed him, the two wickets in as many overs reducing Afghanistan to 110 for three at he end of the 26th over.
An 80-run partnership ensued between Shah and Hashmatullah Shahidi (37), helping Afghanistan to 190 when Dushmantha Chameera sent the Afghan top-scorer back to the pavilion. Shah's knock included five hits to the fence.
Shahidi was the next man to get out, falling to Perera. Mohammad Nabi scored 12-ball 15 before the seasoned Lasith Malinga cut short his stay in the middle.
The Lankans pulled back things in the death, picking up a bagful of wickets with Thisara doing the bulk of the damage.
First Published: September 18, 2018, 8:10 AM IST