Opener Murali Vijay and Cheteshwar Pujara hit sublime centuries to put India in command of the second Test against Sri Lanka, as the hosts took a 107-run lead on Saturday's day two.
The overnight batsmen put together a 209-run partnership to pulverise the opposition attack after the hosts started the day on 11-1 in response to Sri Lanka's 205.
India were 312 for two at stumps in their first innings with Pujara, on 121, and skipper Virat Kohli, on 54, batting to push the visitors out of the game.
Vijay, who made an impressive return to the team after a long injury lay-off, registered his 10th Test ton before falling to Rangana Herath in the final session of play.
The right-handed opener gifted his wicket to the veteran left-arm spinner after mistiming his sweep on a full toss to short fine leg where Dilruwan Perera made no mistake.
Perera had dropped Vijay on 61 at short mid-on off paceman Lahiru Gamage and the spill proved costly for the visitors who managed only one wicket in the day.
Vijay and Pujara made sure India ram home the advantage from day one as they recorded their fifth century stand in their last seven Test innings together.
Vijay, who replaced Shikhar Dhawan in the starting lineup after the left-handed opener pulled out due to personal reasons, hit 11 fours and a six during his 221-ball knock.
Pujara played the sheet anchor's role to perfection and took control after the fall of his overnight partner to record his 14th Test century.
Pujara, a classical batsman who passed 1,000 Test runs this year, played a sedate knock to frustrate the bowlers on a gruelling day for Sri Lanka on the field.
He also combined with Kohli for an unbeaten 96-run stand, forcing skipper Dinesh Chandimal to continue juggling his bowling options till the end of day.
Kohli hit a 66-ball half-century and had smashed six boundaries so far.
The top-ranked India are looking to go one-up in the three-Test series after the first match ended in a draw in Kolkata.