Lahiru Thirimanne and Angelo Mathews hit half-centuries to give Sri Lanka the advantage against India on day three of the rain-hit opening Test on Saturday.
The visitors were 165-4 in their first innings when bad light ended a dramatic day at Kolkata's Eden Gardens. They trail India by seven runs with skipper Dinesh Chandimal not out on 13 and Niroshan Dickwella on 14.
Indian paceman Bhuvneshwar Kumar and Umesh Yadav claimed two wickets each on a day when almost three full sessions were played. Only 31.5 overs were bowled on the first two days because of rain and bad light.
The islanders depended on a 99-run third wicket stand between Thirimanne, who made 51, and Mathews, who scored 52, after losing their openers early.
The left-right batting combination of Thirimanne and Mathews mixed caution and aggression against a persistent Indian pace attack.
Thirimanne, who was dropped on 27, registered his fifth Test fifty but soon edged a moving delivery by Yadav, and skipper Virat Kohli made no mistake at second slip.
Yadav struck again in his next over to send Mathews, making a 50 in an impressive comeback from injury, back to the pavilion after giving away a simple catch to Lokesh Rahul at short cover.
Kumar struck early to remove openers Dimuth Karunaratne, for eight, and Sadeera Samarawickrama, for 23, as the visitors slipped to 34-2 before bouncing back.
In the morning session, a late-order push by Indian batsmen saw the hosts post 172, a score that looked unlikely at 128-8.
After overnight batsman Cheteshwar Pujara fell early on 52, vital contributions from Wriddhiman Saha (29), Ravindra Jadeja (22) and 24 from number-10 Mohammed Shami frustrated the Sri Lankan bowling.
Shami limped off during the Sri Lankan innings five balls into an over which he could not finish.
Pace spearhead Suranga Lakmal finished with figures of 4-26 after taking three wickets on day one to justify the visitors' decision to field first.
Sri Lanka, despite being underdogs against the top-ranked hosts, are eyeing their first Test win on Indian soil during the three-match series.