Kolkata - Openers Lokesh Rahul and Shikhar Dhawan hit fluent half-centuries to lead India's fightback after conceding a significant first innings lead to Sri Lanka on day four of the rain-hit opening Test on Sunday.
The duo put together a 166-run stand before Dhawan fell to paceman Dasun Shanaka for 94. India lead by 49 runs after overcoming a 122-run deficit in their second innings.
Cheteshwar Pujara, on two, was batting alongside Rahul, on 73, when bad light ended an absorbing day's play at Kolkata's Eden Gardens.
Rangana Herath made Sri Lanka stand tall until the second session with a defiant 67 that steered the visitors to 294 in response to India's 172.
But soon Rahul and Dhawan made batting look easy on a sunny afternoon -- a welcome change from the rainy start on the first two days -- to keep the Sri Lankan attack at bay.
In-form Rahul registered his ninth score of 50-plus runs in the last 11 innings, getting equal support from the left-handed Dhawan, who recorded his fourth Test fifty.
The two batsmen smashed 19 boundaries between them, including two sixes from Dhawan, forcing Sri Lanka skipper Dinesh Chandimal to juggle his bowling options.
Shanaka, with little time left for the day to end, denied Dhawan what would have been the batsman's seventh Test hundred in 27 matches.
Earlier Sri Lanka, who started the day on 165-4, suffered a middle-order stutter before Herath put on stubborn partnerships against a persistent pace attack.
The left-handed Herath, Sri Lanka's premier spin bowler, showed great resolve during his knock which lasted 105 balls and included nine boundaries.
Herath, who registered his third Test fifty, finally fell to paceman Bhuvneshwar Kumar after mistiming and slicing to deep point.
Fast bowler Mohammed Shami also made it count after dismissing both overnight batsmen, Niroshan Dickwella and Chandimal, to check Sri Lanka's progress in the morning.
Wicketkeeper-batsman Dickwella, who made 35, and Chandimal, 28, had scored briskly to extend their partnership to 62.
Kumar and Shami claimed four wickets each while third quick Umesh Yadav chipped in with two scalps.
The visitors are seeking their first Test win on Indian soil in the three-match series.