Kolkata: Opener Shikhar Dhawan (94) and KL Rahul (73) restored India's dominance with fluent half-centuries as the hosts erased a 122-run lead to nose ahead in the opening Test against Sri Lanka.
Taking advantage of the improved conditions, Dhawan and Rahul raised a near-flawless 166-run partnership which put India ahead by 49 runs at the end of the fourth day's play.
At stumps, India were 171 for one in their second innings with Rahul and Cheteshwar Pujara (2) at the crease.
Paceman Mohammed Shami, who had walked off the field on Sunday due to cramps in his right leg, claimed three wickets in the morning session to help India bowl out the visitors for 294 early in the second session.
With sun shining bright, the wicket had dried up, becoming conducive for batting but the Indian openers played their drives along the ground in the safe cover region.
The ball was swinging a bit but it came nicely on to the bat. The Indian batsmen got used to the pace of the ball quickly, making Lankan pacers toil hard without much success.
Dhawan and Rahul were calm and patient in their approach, playing mostly with the straight bat but once the the deficit was erased, Dhawan opened up later in the innings to punish the visiting bowlers.
A confident Dhawan used his feet very effectively against the spinners, specially against Rangana Herath, whom he lofted twice out of the park.
The left-hander also swept the left-arm spinner with ease, never allowing Hearth to find his rhythm. However, he ran out of patience when he approached his century and was caught behind while charging paceman Dasun Shanaka.
Before losing his wicket to the only rash shot he played, Dhawan scored 94 runs off 116 balls and hit 13 boundaries, including two shots over the ropes.
Rahul restricted himself to the 'V', abstaining himself from playing extravagant shots, befitting the situation. He was rock solid with his defence and took 113 balls for his knock which contained eight shots to the fence.
The same Sri Lankan bowlers, who shot India out for a paltry 172 in the first innings, today appeared ordinary even as the pitch did offer bounce occasionally.
The only time the Lankans came close to dismissing Rahul was when he (on 22) drove straight back to Lahiru Gamage in the 12th over of the innings but the paceman missed the difficult caught and bowled chance.
Earier, both Bhuvneshwar Kumar (4/88) and Shami (4/100) claimed four wickets each as it took India 38 overs to scalp the remaining six batsmen.
Sri Lanka's number nine batsman Rangana Herath emerged the highest run-scorer with his 67-run knock in a splendid rearguard action which helped them grab a decent 122-run lead.
Resuming at 165/4, Sri Lankan duo of Niroshan Dickwella (35) and skipper Dinesh Chandimal (28) began in aggressive fashion.
Wicket-keeper Dickwella took on Bhuvneshwar, slamming him for three boundaries in the 52nd over but Shami turned the tide in favour of India removing the overnight batsmen.
Dickwella poked at an in-swinger to be caught by Virat Kohli at second slip. In the next over Dasun Shanaka (0) was trapped by Bhuvneshwar with an in-swinger. The decision was unsuccessfully reviewed by Sri Lanka.
In the second ball of the next over, Shami dismissed the Lankan skipper who played away from the body and a faint edge went to Wriddhiman Saha as India claimed three wickets in 10 balls in a superb display of pace bowling in the first hour.
Sri Lanka were accurate with their DRS calls yet again when Dilruwan Perera (5) survived an LBW decision given against him even as he was caught on camera turning towards the dressing room before asking for a review.
It reminded of the Steve Smith 'cheatgate' episode which happened during India-Australia second Test in Bengaluru in March this year. The incident happened in the last ball of 57th over. Perera was yet to open his account when he was struck on backfoot by an in-dipper.
The ball was in-line to be given out by Llong. Perera first looked at his partner Herath and started walking back immediately towards the pavilion.
However, all of a sudden, he opted to review after turning towards dressing room. It was unclear whether any assistance came from the dressing room.
The decision was eventually overturned as the impact was marginally outside the line and Perera survived but strangely there was no protest from Virat Kohli and Co.
Llong was incidentally officiated as an on-field umpire during the Bengaluru Test as well.
Perera, however, could not make it big, becoming Shami's third victim. But Herath remained solid in his counter- attacking innings to give Sri Lanka an edge.
Herath's 67 came off 105 balls with nine boundaries.