Nagpur: Ravichandran Ashwin took four wickets while fellow spinner Ravindra Jadeja and paceman Ishant Sharma picked three each. The tourists lost six wickets in the final session.
India were 11 for 1 at stumps, trial by 194 runs. Lahiru Gamage bowled opener Lokesh Rahul on 7. Another opener Murali Vijay and Cheteshwar Pujara both are playing on two.
Earlier, fast bowler Ishant Sharma worked with India's spinners to bowl out Sri Lanka for 205.
Skipper Dinesh Chandimal top-scored with 57 while opener Dimuth Karunaratne made 51 on a green pitch that helped India's fast bowlers.
Sharma, who got Karunaratne in the second session, made most of the favourable conditions to claim his three wickets for just 37 runs.
The spinners took over to rattle the Sri Lankan batting. Ashwin trapped Chandimal lbw to make the visitors slip further.
Chandimal, who hit a six in his 122-ball knock, was given not out by the on-field umpire but skipper Virat Kohli called for a review which went in India's favour.
Chandimal and Karunaratne put on a crucial 62-run stand for the fourth wicket before the Indian bowlers struck back.
Wicketkeeper Niroshan Dickwella also tried to resist before falling to Jadeja's left-arm spin.
The two teams are fighting to get ahead in the three-Test series after the opening game ended in a draw at Kolkata's Eden Gardens.