India's Shikhar Dhawan smashed his sixth hundred and added 188 in an opening partnership with KL Rahul before Sri Lanka's spinners fought back to halt the touring side's progress in the third and final test on Saturday.
India reached the close of play on 329 for six, after losing no wickets in the first session, with Wriddhiman Saha unbeaten on 13 and Hardik Pandya not out on one at stumps.
After winning the toss and opting to bat, India captain Virat Kohli could not have asked for a better start as his side began their bid to complete a series whitewash over the hosts.
Following wins inside four days in Galle and Colombo, the world's top-ranked side have opened an unassailable 2-0 lead and the injury-hit hosts face another stiff task against Kohli's men in the finale.
On a surface ideal for batting, India's openers picked up boundaries at will and made Sri Lanka pay for their profligacy with Dhawan given a reprieve on one, his edge flying through the slip cordon off left-arm seamer Vishwa Fernando..
Pushpakumara had also provided Sri Lanka a breakthrough in his first over when he dismissed Rahul for 85. The 30-year-old, playing only his second test, later bowled an out-of-sorts Ajinkya Rahane for 17, to end the day with figures of 3-40.
A century once again eluded Rahul, who was dropped twice during his innings, as he was caught at mid-on trying to hit a lofted shot. It was his seventh consecutive score of 50 or more.
Slideshow (3 Images)
Left-arm wrist-spinner Lakshan Sandakan then got Cheteshwar Pujara (eight) to edge one to slip as Sri Lanka continued to fight back.
The 26-year-old, replacing the injured Rangana Herath, also removed the dangerous Kohli with the right-handed batsman out for 42 after getting an edge to slip.
Ravichandran Ashwin (31) was the only wicket to fall to the faster bowlers when he edged Fernando to wicketkeeper Niroshan Dickwella after the hosts had taken the second new ball.
Left-arm wrist spinner Kuldeep Yadav was the only change for the touring side, called up as a replacement for suspended left-arm spinner Ravindra Jadeja.
The hosts have been hurt by injuries throughout the series and will be missing both spin spearhead Herath and paceman Nuwan Pradeep. Middle-order batsman Dhananjaya de Silva was dropped after scores of nought and 17 in Colombo.
India 1st innings
S. Dhawan c Chandimal b Pushpakumara 119
L. Rahul c Karunaratne b Pushpakumara 85
C. Pujara c Mathews b Sandakan 8
V. Kohli c Karunaratne b Sandakan 42
A. Rahane b Pushpakumara 17
R. Ashwin c Dickwella b V. Fernando 31
W. Saha not out 13
H. Pandya not out 1
Extras (b-6 lb-5 nb-2) 13
Total (for 6 wickets, 90 overs) 329
Fall of wickets: 1-188 L. Rahul,2-219 S. Dhawan,3-229 C. Pujara,4-264 A. Rahane,5-296 V. Kohli,6-322 R. Ashwin
To bat: K. Yadav, M. Shami, U. Yadav
Vishwa Fernando 19 - 2 - 68 - 1(nb-1)
Lahiru Kumara 15 - 1 - 67 - 0
Dimuth Karunaratne 5 - 0 - 23 - 0
Dilruwan Perera 8 - 1 - 36 - 0(nb-1)
Lakshan Sandakan 25 - 2 - 84 - 2
Malinda Pushpakumara 18 - 2 - 40 - 3
Umpire: Richard Illingworth
Umpire: Rod Tucker
TV umpire: Bruce Oxenford
Match referee: Richie Richardson
Pix by Amila Gamage
Indian skipper Virat Kohli won the toss and elected to bat first in the third and final Test against Sri Lanka.
India made only one change to their side, bringing in Kuldeep Yadav, the left-arm wristspinner in place of Ravindra Jadeja who was suspended by the ICC.
Sri Lanka also brought in left-arm wristspinner Lakshan Sandakan to replace the injured Rangana Herath. Hosts looking to avoid a whitewash also brought in two-man pace attack in Lahiru Kumara and Vishwa Fernando for Dhananjaya de Silva and the injured Nuwan Pradeep.
India: 1 Shikhar Dhawan, 2 KL Rahul, 3 Cheteshwar Pujara, 4 Virat Kohli (capt), 5 Ajinkya Rahane, 6 R Ashwin, 7 Wriddhiman Saha (wk), 8 Hardik Pandya, 9 Kuldeep Yadav, 10 Mohammed Shami, 11 Umesh Yadav.
Sri Lanka: 1 Upul Tharanga, 2 Dimuth Karunaratne, 3 Kusal Mendis, 4 Dinesh Chandimal (capt), 5 Angelo Mathews, 6 Niroshan Dickwella (wk), 7 Dilruwan Perera, 8 Malinda Pushpakumara, 9 Lakshan Sandakan, 10 Lahiru Kumara, 11 Vishwa Fernando.
Sri Lanka are flirting with an embarrassing series whitewash in the third Test against India from Saturday as they struggle with problems on and off the pitch which have thrown the team into turbulence.
A series of poor results, the early departure of their coach and accusations against players and the country's cricket chief have made for a difficult few months for the former one-day world champions.
Sri Lanka, lampooned by fans and described as pot-bellied by their sports minister, can now ill afford a third loss to top-ranked India in Pallekele, following their crushing defeats in Galle and Colombo.
They have not been helped by a succession of injuries, capped by a back problem which has sidelined their number one bowler, Rangana Herath, for the third Test.
Paceman Nuwan Pradeep could bowl only 17.4 overs in Colombo before pulling out with a hamstring injury, and all-rounder Asela Gunaratne are already out of the series.
Sri Lanka failed to reach the semi-finals of the eight-team Champions Trophy in June, and then lost their coach when Graham Ford quit mid-contract.
Worse was to come when they humiliatingly went down 3-2 in a home one-day series to bottom-ranked Zimbabwe.
Former captain Arjuna Ranatunga, a government minister, told AFP that he blamed Sri Lanka's losses on cricket chief Thilanga Sumathipala, and accused him of links to gambling -- a claim Sumathipala denies.
There have also been reports of attempts to approach Sri Lankan players for alleged match-fixing.
Skipper Dinesh Chandimal, who missed the first Test with pneumonia, says a consolation victory over India would help put the smiles back on his players' faces.
“If we can win even one match against a team like this (India), we will be able to really boost the mental state in the team. They are the number one team,” said Chandimal.
“We need to pick up the positives and look forward to the next game.” There are no such problems for Virat Kohli, who became the only India captain to win two Test series in Sri Lanka as his side smashed first innings of 600 and more in the opening two Tests.
Cheteshwar Pujara leads India's run-scorers with two centuries and an average of more than 100 in India's three innings so far.
India's bowlers have also shone with spinners Ravindra Jadeja and Ravichandran Ashwin topping the wicket-takers' chart with 13 and 11 respectively.
Jadeja is suspended for the third Test for a dangerous throw, with Axar Patel brought in as his like-for-like replacement in the India squad.
Despite their form, wicketkeeper-batsman Wriddhiman Saha insists India are taking nothing for granted.
“We haven't thought about 3-0. Our process is match by match,” he said.
“We are ahead by 2-0, so in the next match the aim is to give similar performance as last two matches as a team in batting, bowling and fielding. We will try to be consistent and if we do then we can win. “