Quick Lahiru Kumara, recovering from a hamstring sprain, took both openers out of the game, and Chamira took out four of his top six batters. Legspinner Wanindu Hasaranga recorded three wickets after Afghanistan opted to play first.
Afghanistan went into the lead for 22.2 overs. It was a weak effort on a good batting pitch. Only three players scored 20+ runs amidst a lot of soft penalties.
Afghanistan again lost starting batter Rahmanullah Gurbaz early, who tried to hook Kumar in the second over and threw him over on the penalty foot in the 8th minute.
Hamira led off Rahmat Shah and Hashmatullah Shahidi in the same fifth over, both with nicks, and Afghanistan was reduced to 77-6 with little tail resistance against the spinners.
Mohammad Nabi scored 23 points.
Sri Lanka wasted no time in catching up with the target. Patum Nissanka and Dimuth Karunaratne, who opened the game, had 84 assists.
Nissanka scored his seventh half-century in just 32 balls, making eight fours and two sixes. He was trapped in the 51st minute.
Karunaratne needed 43 balls to reach his eighth half-century with seven fours. Karunaratne was unbeaten in the 56th minute when Sri Lanka got the win with 34 ounces to spare.
It was a good comeback for Sri Lanka after losing the first game by six wickets. The hosts won the second game by a margin of 132 runs and ended the series with a nine-wicket victory. It was their first win in the series by a margin since 2014.
After consecutive half-centers in their first ODI series in more than two years, Karunaratne looks to have secured their place in the World Cup qualifiers that begin in Zimbabwe next week.
Afghanistan have already qualified for the Cricket World Cup in India in October.