Colombo: The hosts were 209 for two at close, still trailing India by 230 runs in their second innings. Karunaratne and nightwatchman Malinda Pushpakumara on two were at the crease.
Kusal Mendis smashed an attacking century (120 balls, 16 fours) to give this Indian side the first glimpse of the talent the 22-year-old Sri Lankan batsman is blessed with.
Being termed as the next big thing in Sri Lanka cricket, Mendis blazed away to a hundred on the third day of the second Test on Saturday, using the horizontal-batted shots to good effect against the spinners, at the homeground of Mahela Jayawardene, whose role he is tipped to perform in the team and become the lynchpin of batting
The test of all good players is how they measure up under pressure, and though Mendis had started poorly against India, all three of his hundreds of his budding career have been impressive because they have come when his team is in trouble.
Mendis announced his arrival with a stunning century against Australia in his seventh Test, a game-changing 176 in the second essay in 2016. His second was a match-winning 194 against Bangladesh at Galle in March this year.
Earlier in the day, Sri Lanka nosedived from their overnight 50-2 to 183 all out, handing the visitors a chance to clinch the three-match series 2-0.
The islanders were in early trouble in the second innings when paceman Umesh Yadav got opener Upul Tharanga out for two after lunch on a seemingly deteriorating pitch.
The left-right batting combination of Karunaratne and Mendis then dug in their heels to thwart the Indian bowling attack, forcing skipper Virat Kohli to rotate his options.
The duo handled the Indian spinners with aplomb, using their feet to good effect as they combined the right dose of caution and aggression.
Mendis, who hit his third Test hundred, played an attacking game as he smashed 17 boundaries before letting go of his hard work with a catch to wicketkeeper Wriddhiman Saha.
The Colombo-born Karunaratne remained patient during his 200-ball knock so far as he played out the remaining few overs with debutant Pushpakumara in a tense finish to the day.
But it was the first session that hit the hosts hard as they lost eight of their remaining wickets and conceded a 439-run lead in response to India's formidable 622-9 declared.
Off-spinner Ravichandran Ashwin, who had removed the Sri Lankan openers at the end of day two, claimed five wickets to rattle the Sri Lankan middle and lower order.
The Dinesh Chandimal-led Sri Lanka need at least a draw to stay alive in the series
India - 622/9d (Pujara 133, Rahane 132, Jadeja 70*, Herath 4-154)
Sri Lanka - 183 (Dickwella 51, Ashwin 5-69) and 209/2 (f/o) (Mendis 110, Karunaratne 92*)
Status - Sri Lanka trail by 230 runs