Published: 2017-08-05 20:25:19 BdST
Kusal Mendis smashed a belligerent 110 and Dimuth Karunaratne complimented with an unbeaten 92 following Sri Lanka's first innings capitulation for 183 on day three of the contest.
After losing eight wickets in the extended morning session, Sri Lanka returned after lunch a transformed side, as Mendis and Karunaratne raised 191 runs following Upul Tharanga's departure for two.
On a fast-crumbling track, Mendis deftly negotiated the Indian spinners, hitting 17 boundaries in his sparkling knock before falling to Hardik Pandya.
Karunaratne's unbeaten knock included 12 hits to the fence. Nightwatchman Malinda Pushpakumara was batting on two with Sri Lanka still trailing by 230 runs.
Earlier, Ravichandran Ashwin (5-69) claimed his 26th five-wicket haul as he and spin partner Ravindra Jadeja (2-84) tormented Sri Lanka on a deteriorating pitch that allowed for prodigious spin, with the ball often kicking up puffs of dust.
India captain Virat Kohli, who led his team to a crushing 304-run win in the first of the three Tests, was rewarded for his superb field placement when compulsive sweeper Dinesh Chandimal sent a Jadeja delivery straight to Pandya at square leg.
Kohli dropped Angelo Mathews at gully but ran backwards to take a brilliant catch to send back Mendis for 24.
Mathews decided to hit his way out of the trouble and clobbered a couple of sixes off Jadeja but the ploy did not work for long.
With a breezy 26 on the board, he flicked at an Ashwin delivery and Cheteshwar Pujara took a spectacular left-handed catch at leg gully.
Jadeja dismissed Dhananjaya de Silva for a golden duck and Mohammed Shami came up with a two-wicket over to leave the Sri Lankan innings in tatters.
Realising the futility of trying to hang around, Niroshan Dickwella threw his bat at everything, hitting seven boundaries and a six in his 51 before attempting an ugly scoop against Shami that deflected the ball onto his stumps.
Nuwan Pradeep came out to bat despite a hamstring injury which will rule him out of the remainder of the series and he faced six balls before falling for a duck to end the innings.