At stumps on the second day, Sri Lanka were struggling at 154 for 5 after Pandya's 49-ball-50 helped the visitors reach a mammoth first innings score of 600. Shikhar Dhawan with 190 and Cheteshwar Pujara's 153 were the cornerstone of the gigantic total.
Sri Lanka need another 246 runs to avoid the follow-on with former skipper Angelo Mathews batting on 54.
Mohammed Shami (2/30) had an impressive comeback to Test arena while Umesh Yadav (1/50 in 8 overs) was erratic unable to hit the right length. Ravichandran Ashwin (1/49 in 18 overs) was economical and Abhinav Mukund's alertness in the field contributed to a run-out.
The Indian team upped the ante in the final session where they got four wickets. Post tea break, Shami got reward for hitting the right length.
Also Read
First Shami accounted for Danushka Gunathilaka (16) in the 15th over and then four balls later, he sent back Kusal Mendis (0), with both batsmen caught at first slip by Shikhar Dhawan.
Veteran opener Upul Tharanga (64 runs, 93 balls, 10 fours) stroked his way to an attacking eighth Test half- century.
Afterwards, he put on another 57 runs for the fourth wicket with Mathews (54 batting, 91 balls, 8x4) as the duo battled hard against Ashwin.
Scoring at a steady clip, the hosts reached 100 in the 25th over. Shortly afterwards, Tharanga was run-out as his bat was found hanging in the air and Mukund stationed at silly point showed smartness to hit the stumps, effecting a run-out.
Mukund's sharp reflexes helped India get another wicket as he held on to a fine one-handed catch at silly point again to give Ashwin his first wicket of the match. Niroshan Dickwella (8) being the batsman.
He added only 14 runs with Ravindra Jadeja (15) after lunch before the latter was clean bowled by Nuwan Pradeep (6- 132).
Pandya was dropped at first slip off Rangana Herath (1- 159) when he was batting on 4. But thereafter, he didn' give any chances to the opposition, unleashing his full array of strokes as he sped to his half-century.
Shami (30) gave him optimal company and the duo put on 62 runs for the 8th wicket as they attacked the Lankan bowling. The latter fell to Lahiru Kumara (3-131) but not before making sure India built on their commanding position.
In the morning, Pradeep took his maiden five-wicket haul in Test cricket as India reached 503 for 7 at lunch after losing 4 wickets for 104 runs.
Starting from overnight 399/3, India crossed the 400-mark on the first ball of day two.
Cheteshwar Pujara (153 runs, 265 balls, 13 fours) and Ajinkya Rahane (57 runs, 130 balls, 3 fours) looked to continue their overnight partnership, and were batting fluently.
Pujara had a DRS decision for caught behind turned down off Herath in the very third over of the day.
Pujara also went past his best Test score of 145* in Sri Lanka, scored at the SSC back in 2015. Meanwhile, Rahane scored his 12th Test half-century off 118 balls.
The Saurashtra right-hander was finally out caught behind off Pradeep in the 98th over. It started the slide for India as Rahane was caught at slip four overs later off Kumara.
Surprisingly, Ashwin (47 runs, 60 balls, 7 fours) and Wriddhiman Saha (16) both came out to bat ahead of debutant Hardik Pandya.
Ashwin-Saha though maintained India's hold over proceedings adding 50 runs in 67 balls.
Overall, they put on 59 runs for the sixth wicket before Saha holed out to mid-on off stand-in skipper Herath to give him his first wicket in the Test.
Disclaimer: No Business Standard Journalist was involved in creation of this content