Opener Dimuth Karunaratne hit a gritty half-century as Sri Lanka struggled against India's persistent bowling on the opening day of the second Test on Friday.
Paceman Ishant Sharma took two wickets including Karunaratne for 51 to hurt the visitors, who opted to bat first on a green Nagpur pitch.
Sri Lanka were 151-4 at tea with skipper Dinesh Chandimal, on 47, and wicketkeeper-batsman Niroshan Dickwella, on 18, at the crease.
Chandimal was involved in a crucial, 62-run fourth-wicket stand with Karunaratne as the visitors attempted to steady the innings after losing three early wickets.
The left-handed Karunaratne, who hit six boundaries in his 147-ball stay, went on to register his 14th Test fifty before being trapped lbw by Sharma.
They were hard-earned runs for the left-handed Karunaratne, who got two reprieves on 17 and 21 in testing conditions.
Ravindra Jadeja, who had got Karunaratne stumped on a no ball before lunch, was also rewarded for his persistence after trapping Angelo Mathews lbw for 10.
Earlier, the visitors lost opener Sadeera Samarawickrama for 13 and Lahiru Thirimanne for nine to take lunch at 47-2 after a tough morning session.
The two teams are fighting to go ahead in the three-Test series after the opening game ended in a draw at Kolkata's Eden Gardens.