Debutant Kusal Perera top-scored with 55 and Rangana Herath made 49, with the last four wickets adding 154 runs after the hosts were reduced to 47-6.
Read: Pujara's comeback ton lifts India against Sri Lanka
Seamer Ishant Sharma finished with 5-54 to help India take a lead of 111 runs.
Earlier, Indian opener Cheteshwar Pujara carried his bat with an unbeaten 145 as the tourists added 20 to their overnight score of 292-8 before being dismissed 25 minutes after play began.
Sri Lanka won the opening Test in Galle by 63 runs and India drew level with a 278-run victory in the second match at the P. Sara Oval in Colombo last Monday.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ