The hosts were reduced to 27-3 by the 12th over after they won the toss and elected to bat, before going to lunch on the first day at an uncomfortable 65-5.
Skipper Angelo Mathews was unbeaten on 26 and Dinesh Chandimal was on five at the break.
Lanky seamer Ishant Sharma struck the first blow in his fourth over, forcing Dimuth Karunaratne to fend a short ball to Ajinkya Rahane at first slip.
In the next over, Kaushal Silva top-edged fast bowler Varun Aaron and Shikhar Dhawan made amends for a dropped catch earlier in the innings by holding the skier at first slip.
Kumar Sangakkara, playing the first of his last two Tests before retiring from international cricket, walked in at 15-2 to the bursting of crackers and a warm applause from some 1500 home fans.
The left-hander, the leading run-scorer in Tests among those still playing, faced just 12 deliveries when he fell in the first over after the drinks break for five.
Sangakkara punched the third ball from Ashwin straight to silly-point fielder Lokesh Rahul, who gleefully held on to the sharp chance.
Lahiru Thirimanne (13) appeared in fine touch while striking two boundaries before he became Ashwin's second victim, caught in the slips by Rahane to leave Sri Lanka tottering at 54-4.
Ashwin gained another wicket before lunch when he deceived Jehan Mubarak (0) in the air and the batsman gave Rahul an easy catch at forward short-leg.
India picked three spinners – Harbhajan Singh, Ashwin and Amit Mishra– in a five-man bowling attack on an unusually dry pitch.
The home team went in with two seamers and two spinners, preferring to bolster the batting with seven specialists. – AFP
Original source: Ashwin has Sri Lanka in a spin