Rangana Herath struck a defiant half-century to help Sri Lanka gain a 122-run first innings lead on the fourth day of the rain-hit opening Test in Kolkata on Sunday.
The visitors were bowled out for 294 in the second session at Eden Gardens but not after Herath, who top-scored with 67, registered his third Test fifty.
Sri Lanka, who started the day on 165 for 4 in reply to India's 172, wobbled in the morning before Herath put stubborn partnerships with Dilruwan Perera and Suranga Lakmal.
Fast bowler Mohammed Shami and Bhuvnesshwar Kumar claimed four wickets each.
Shami dismissed both overnight batsmen, Niroshan Dickwella and skipper Dinesh Chandimal, to check Sri Lanka's progress in the morning.
Dickwella, who made 35, and Chandimal, 28, had scored briskly to extend their partnership to 62.
The left-handed Dickwella edged a seaming and bouncing delivery from Shami, with skipper Virat Kohli taking a sharp chance at second slip.
Chandimal had added 15 to his overnight 13 when Shami had him caught behind in his next over as the visitors lost three wickets in 10 deliveries.
The left-handed Herath, Sri Lanka's premier spin bowler, showed great resolve in an innings which has lasted 105 balls and included nine boundaries.
He finally fell to Kumar after mistiming and slicing to deep point.
The islanders gained the upper hand against their top-ranked hosts largely thanks to a 99-run third-wicket stand between Angelo Mathews (52) and Lahiru Thirimanne (51) on Saturday.
The visitors are seeking their first Test win on Indian soil in the three-match series.
© 2017 AFP