Shikhar Dhawan made his highest Test score with a rapid century and Cheteshwar Pujara also scored a magnificent hundred as India piled on the runs on a painful first day of the series for Sri Lanka.
Dhawan was only brought into the squad after Murali Vijay was ruled out of the tour due to a wrist injury and the left-hander grasped his opportunity in style on day one in Galle.
The destructive opener - playing his first Test this year - made a brilliant 190 off only 168 balls and the classy Pujara was still there on 144 when India closed on 399-3, Nuwan Pradeep taking all three wickets.
Dhawan was dropped on 31 by Asela Gunaratne, who could miss the rest of the series after fracturing his thumb while attempting to cling on at second slip, and went on to score a fifth Test hundred.
The powerful Dhawan added insult to injury, scoring 126 runs in a punishing afternoon session for Sri Lanka, and the prolific Pujara cashed in on a flat pitch with another exquisite innings as the tourists made their second-highest score on day one of a Test.
-- OptaJim (@OptaJim) July 26, 2017
Abhinav Mukund got his chance at the top of the order in the absence of the unwell KL Rahul, but fell cheaply when he edged Pradeep (3-64) behind after Virat Kohli won the toss.
Dhawan was given a lifeline when he put down by Gunaratne, who was left in agony as his participation in this match at the very least came to a premature end.
The aggressive Dhawan was in one-day mode, using his feet superbly and was unbeaten on 64 to take the top-ranked side on to 115-1 at lunch, with Pujara looking ominously untroubled.
Dhawan cut loose after the interval, demonstrating the full range of strokes he has in his repertoire as the runs came all too easily, and Pujara was also in majestic touch.
A sweep for four took Dhawan to three figures, almost two years after his previous Test century at the same venue, and Pujara continued to show great timing as he eased to 50.
Sri Lanka's stand-in captain Rangana Herath looked short of ideas with the free-scoring Dhawan in such imperious touch, but after hitting 31 boundaries in a stunning knock, the opener gave it away by driving Pradeep to Angelo Mathews at mid-off just before tea to end a stand of 253.
Kohli was given out caught behind for only three attempting to hook Pradeep following a successful review from Herath, but Pujara made Sri Lanka suffer and raised his bat to celebrate yet another hundred after finding a leg-side gap to pick up two.
Pujara and Ajinkya Rahane (39 not out) added 113 for the fourth wicket by the time India - who handed a debut to Hardik Pandya - closed in a commanding position.