India amassed 622 for nine before declaring their first innings and then returned to remove both the Sri Lankan openers to tighten their grip on the second test on Friday.
For the second successive time in the three-match series, India won the toss, elected to bat and amassed 600 or more in their first innings before unleashing their bowlers on their hosts.
Like in their comprehensive defeat in the series opener at Galle, Sri Lanka made a feeble reply to finish day two on 50 for two at the Sinhalese Sports Club ground.
Skipper Dinesh Chandimal was batting on eight at stumps with the hosts needing a special knock from him, while Kusal Mendis was on 16 with Sri Lanka trailing by 572 runs.
For India, Ravichandran Ashwin hit a half-century and returned to dismiss both the openers to cap a particularly satisfying day.
Unable to call on lone frontline paceman Nuwan Pradeep due to a hamstring injury, Sri Lanka faced an unenviable task when India resumed on 344-3 with Cheteshwar Pujara and Ajinkya Rahane, partners in a double century stand, looking to heap more misery on them.
Dimuth Karunaratne and the debutant Malinda Pushpakumara claimed their maiden test wickets in the morning session to bring some relief for them.
Karunaratne hit Pujara's back thigh in the second over of the day but the leg-before appeal was turned down. Sri Lanka used review to overturn the decision.
Pujara batted for three hours and 20 minutes, hitting 11 boundaries and a six in his 133.
Rahane was stumped off Pushpakumara after making 132 which included 14 boundaries.
There was no respite, however, for the hosts as the lower half of the Indian line-up feasted on a jaded Sri Lankan attack.
Ashwin hit a fluent 54, Wriddhiman Saha struck a patient 67 and Ravindra Jadeja smacked three sixes in his unbeaten 70 off 85 balls before India declared their innings.
Six Indian batsmen notched up 50-plus scores, while three Sri Lankan bowlers bled 147 or more as the tourists maintained their iron grip on the contest.
Sri Lanka got off to a nightmarish start, losing opener Upul Tharanga to the second over of their innings.
The batsman hit an innocuous Ashwin delivery right into KL Rahul's body at short leg to depart for a duck.
Opening partner Karunaratne made 25 before edging Ashwin to slip to compound Sri Lanka's crisis.
Sri Lanka 50 for 2
(Mendis 16*, Chandimal 8*, Ashwin 2-38) trail India 622 for 9 dec
(Pujara 133, Rahane 132, Jadeja 70*, Saha 67, Rahul 57, Ashwin 54, Herath 4-154) by 572 run