Indian bowlers started well after Sri Lanka opted to bat in Nagpur.
Dimuth Karunaratne started out slowly, earned a couple of reprieves, and went to score a dogged half-century. He also became only the second Sri Lankan opener since Sanath Jayasuriya to score 1000 runs in a calendar year.
Ishant Sharma made a fine comeback to the Test side, finishing the innings with three wickets.
Ravichandran Ashwin bagged four wickets, moving closer to the 300 Test-wickets mark.
Ravindra Jadeja picked three wickets.
After Karunaratne's exit, Niroshan Dickwella started well alongside his captain Dinesh Chandimal but threw his wicket away in the final session.
Dinesh Chandimal scored a half-century and took his Test runs past 3000-mark but Sri Lanka were bundled out for 205.
Lahiru Gamage dismissed KL Rahul early, as India finished the day on 11 for 1, 194 runs behind the visitors.