India's pacemen made early inroads into Sri Lanka's second innings on the fourth morning of the first test on Saturday after setting the hosts a mammoth target of 550 runs to win.
Sri Lanka, already a batsman short after Asela Gunaratne fractured his thumb and was ruled out of the series, reached 85 for two at lunch, facing an uphill task to avoid going 1-0 down in the three-match series.
Opening batsman Dimuth Karunaratne was unbeaten on 44 with Kusal Mendis 24 not out at the break.
India, the world's top-ranked test side, declared their second innings closed on 240 for three after captain Virat Kohli completed his 17th test hundred.
The right-handed batsman, who resumed the day on 76, remained unbeaten on 103 after reaching the three-figure mark with a single off spinner Dilruwan Perera.
The century ended a poor run in tests for Kohli, who hit five boundaries and one six in his 136-ball knock, with the 28-year-old totalling a meagre 49 runs in his last six innings.
Burdened with an improbable target, Sri Lanka needed a solid opening stand but their hopes were pegged back when Mohammed Shami castled Upul Tharanga for 10, after the batsman was dropped by Kohli at second slip in the same over.
Debutant Danushka Gunathilaka did not last long either and was out for two, hitting Umesh Yadav straight into the hands of Cheteshwar Pujara at square leg.
Sri Lanka were reduced to 29-2 at that stage and needed a solid 56-run unbroken stand between Karunaratne and Mendis to deny India any further success in the opening session.