Sri Lanka struck back through spinners but Devdutt Padikkal's elegant 167 powered India to a commanding 460-9 in the rain-plagued opening test in Galle on Sunday.
Sri Lanka's spin pair of Prabath Jayasuriya (4-109) and Keshara Nuwantha (3-175) kept the hosts in the match but India scored nearly at four-an-over rate to finish in a position of strength.
Kuldeep Yadav (12) and Prasidh Krishna (one) were batting when stumps were drawn on day two.
Play was supposed to start 15 minutes early after only 73 overs could be bowled at the Galle International Stadium on Saturday.
Instead, players were confined to the dressing room for nearly four hours waiting for the cover to come off the pitch.
Rishabh Pant (39) looked in a hurry to score but he became debutant Nuwantha's first test victim after charging out and skying the ball to the fielder at deep mid-wicket.
Opener KL Rahul, who had retired hurt on 77 on Saturday after suffering cramps, came out to bat but fell short of a hundred that looked there for the taking.
Rahul made 82 before flicking a Nuwantha delivery into the waiting hands of Nishan Fernando at forward short leg.
Jayasuriya ended Padikkal's fine knock when the spinner lured the batter out of his crease and had him stumped. Padikkal hit 15 fours and a six in his maiden test hundred.
Nuwantha removed Ravindra Jadeja (13) but Dhruv Jurel raced to a breezy 51.
Sri Lanka captain Dhananjaya de Silva, who had dropped Jurel on 29, took a sensational catch to remove the batter but could not polish off India's tail.

Man arrested on suspicion of fraud after security operation disrupts European Championships
Bangladesh claim first test win in Australia as Green ton in vain
Djokovic falls in Cincinnati heat in first match since Wimbledon
Islam Makhachev wins record 17th straight fight at UFC 330
Germany's Liebmann smashes 1500m world record
