Virat Kohli made a majestic fifth Test double century and the recalled Rohit Sharma scored an unbeaten hundred as India piled on the runs before Sadeera Samarawickrama's dismissal added insult to injury for Sri Lanka on day three.
India captain Kohli produced another masterclass in Nagpur on Sunday, tormenting the Sri Lanka bowlers with a classy 213 from only 267 balls as the top-ranked team racked up 610-6 declared in reply to 205.
Kohli matched Brian Lara's record of scoring five double hundreds as skipper, putting on 173 with the stylish Rohit (102 not out), who marked his first Test for 11 months with a third century in the longest format - and his first since 2013.
Murali Vijay and Cheteshwar Pujara had already made Sri Lanka toil with centuries and they endured more punishment in the field at Vidarbha Cricket Association Stadium before Ishant Sharma removed Samarawickrama without scoring, reducing the tourists to 21-1 at stumps - trailing by a mammoth 384 runs.
Dasun Shanaka was fined for ball tampering on day two, but the Sri Lanka paceman's mood improved when he rattled Pujara's off stump to remove the number three for a superb 143 after India resumed on 312-2.
That was the only wicket to fall in the morning session, Kohli following up his ton in the drawn first Test with yet another as he put on a show with strokes all around the wicket of the highest order.
Dilruwan Perera (3-202) got rid of Ajinkya Rahane cheaply just after lunch, but Rohit launched the expensive spinner down the ground for six as he raced to 50 and Kohli celebrated his 150 after easing the same bowler over the ropes with a sublime wristy stroke.
There was no respite for the Sri Lanka bowlers, Kohli toying with them as he continued to find the gaps on both sides of the wicket and effortlessly dispatched Dilruwan into the leg side for another six before taking a single to move on to the 200 mark after tea following a wicketless second session.
Ravichandran Ashwin missed out, but there was a deserved century for Rohit before Kohli declared to give the India bowlers nine overs to make inroads.
Ishant needed only two balls to strike, Samarawickrama bowled after shouldering arms as Sri Lanka faced the prospect of a crushing innings defeat.