India opener Shikhar Dhawan smashed another hundred and KL Rahul made a record-equalling half-century before Sri Lanka hit back on day one of the third Test in Pallekele.
Dhawan put Sri Lanka's attack to the sword with a magnificent 190 in the first Test and he hit a brisk 119 as the India openers cashed in after Virat Kohli won the toss on Saturday.
Rahul (85) gave another exhibition of his class at the top of the order, becoming only the sixth man to score 50 or more in seven consecutive Test innings courtesy of a first-wicket stand of 188.
Malinda Pushpakumara (3-40), in only his second Test, sparked Sri Lanka's revival after lunch and Lakshan Sandakan (2-84) struck twice, leaving India 329-6 at stumps as they target a 3-0 series whitewash.
Wriddhiman Saha (13 not out) and Hardik Pandya (1 no) will resume in Kandy on Sunday.
The aggressive Dhawan latched on to short stuff from the recalled Lahiru Kumara with some exquisite cuts, while Rahul pulled expertly and drove with elegance as India got off to an ominous start.
Kumara was removed from the attack after only three overs and failed to redeem himself for a poor opening spell when he dropped Rahul on 28 running back from mid-on off the bowling of Dimuth Karunaratne.
That proved to be costly as Dhawan and Rahul continued to score all too easily, the left-hander setting about spinner Dilruwan Perera.
The prolific Rahul, who timed the ball superbly, etched his name in the record books with yet another half-century and Dhawan raced on to 64 as India reached lunch on 134 without loss.
Angelo Mathews had no time to react when Rahul edged a cut past him at slip off Sandakan, but he missed out on a century after dancing down the track to strike Pushpakumara to Karunaratne at mid-on.
Cheteshwar Pujara was rattled on the helmet by a short ball from Kumara before Dhawan brought up his sixth Test hundred by using his feet superbly to drive Pushpakumara wide of mid-off for four.
Dhawan's stylish 123-ball knock, which included 17 boundaries, ended when he swept Pushpakumara to a diving Dinesh Chandimal and Pujara (8) fell before tea, caught cutting Sandakan to Mathews in the slips, as the hosts' persistence finally paid off.
Pushpakumara bowled Ajinkya Rahane (17) and Sandakan claimed the scalp of Kohli, who was taken by Karunaratne at slip eight short of a half-century, in a strong Sri Lanka fightback.
Vishwa Fernando, playing his second Test a year after his debut, also snared Ravichandran Ashwin (31) caught behind at full stretch by Niroshan Dickwella to give Sri Lanka another late lift.
|New number one Federer revels in ´unbelievable´ week|
|Real Madrid defender Marcelo suffers hamstring injury|
|Costa fumes referees ´want to give me a card´, but Simeone plays down penalty row|
|Thiem regains Argentina Open title|
|Stoger makes Dortmund history with Gladbach win|
|Championship Review: Leeds fight back for point, Norwich & Ipswich share derby spoils|
|Racing beat La Rochelle to go second, Castres edge out Bordeaux|
|Borussia Monchengladbach 0 Borussia Dortmund 1: Burki unbeatable as Reus returns to haunt Foals|
|FA Cup ´magic´ no surprise to Pochettino after Rochdale thriller|
|Rochdale hero Davies: This is every kid´s dream|
|Atletico Madrid will not stop in pursuit of Barcelona, promises Gameiro|
|Banks boot pays dividends for Treviso|
|Lucky 13 and second successive title for Kvitova after Muguruza classic|
|´Wrong image´ to blame for VAR confusion in Manchester United´s FA Cup win|
|Rochdale 2 Tottenham 2: Davies denies Kane in FA Cup classic|
|Rieder stretchered off as Wasps extend Chiefs´ slump|
|Atletico Madrid 2 Athletic Bilbao 0: Gameiro and Costa settle cagey clash|
|NHL commissioner Bettman condemns ´reprehensible´ Smith-Pelly abuse|
|Visser, Scott and Nel among six recalled by Scotland|
|Bhuvneshwar and Dhawan inspire India´s Wanderers win|
|Napoli set club record with another Serie A win|
|Froome disappoints in time trial as Wellens wins Ruta del Sol|
|Napoli 1 SPAL 0: Allan sends hosts top of Serie A again|
|Federer makes short work of disappointing Dimitrov|
|Allegri allays Higuain injury fears|
|Blackhawks fans ejected after racist heckling of Capitals´ Smith-Pelly|
|Allegri convinced Juve can get past Spurs|
|Sri Lanka sweep series after dominating Bangladesh|
|Everton fear ´long-term´ injury for Mangala|
|If it isn´t Madrid, it´s Paris - Hazard tires of speculation|
|Luiten claims Oman Open title|
|Torino 0 Juventus 1: Champions win derby but lose Higuain|
|Neymar exit made Barcelona stronger - Ter Stegen|
|Remove T20 cricket from international schedule - Bayliss|
|Injured Higuain forced off against Torino|
|Jesus confident of returning strong after knee injury|
|DeGale launches Twitter attack on beaten Eubank Jr|
|We had to change hotels – Ovrebo recalls fury after 2009 Chelsea-Barcelona semi-final|
|Spalletti: Inter board will decide my future|
|Munro blitz helps Black Caps progress despite defeat|
|Fabregas still wary of timeless Iniesta|
|Liverpool´s 30-goal hero Salah: There´s more to come|
|Valverde: Coutinho dropped for the good of Barcelona|
|Garcia floors Rios for ninth-round TKO|
|Ronaldo better than Neymar? No says Xavi|
|Donovan Mitchell caps NBA All-Star challenges with dunk success|
|Anderson outlasts Nishikori to reach New York Open final|
|Steve Nash, Ray Allen among Basketball Hall of Fame finalists|
|Kevin Love: It was necessary to clean house in Cleveland|
|Real Madrid hurt you with nothing – Xavi says PSG loss an injustice|
|Conte: Chelsea need perfect game to stop Messi and Barcelona|
|LeBron James thanks Ingraham as Cavs All-Star vows to speak his mind|
|Archer says Rays could have best rotation in baseball|
|Bubba Watson takes lead with 65 at Genesis Open|
|Inter in a fragile moment, says Spalletti|
|Groves batters Eubank Jr to retain WBA crown|
|Montpellier see off plucky Oyonnax, Ashton stars in Stade mauling|
|Booed Emery praises PSG´s mental strength|
|Cavani hails ´good reaction´ as PSG bounce back in style|
|Thiem breezes past Monfils to set up Bedene showdown|
|Mourinho wants referees to have final say on VAR|
|Genoa 2 Inter 0: Pandev piles misery on old employers|
|Manchester United to host Brighton in FA Cup quarter-finals|
|Leinster see off Scarlets as Munster come up short in Cardiff|
|New No.1 Federer earns gritty Seppi win to book Rotterdam final|
|Mata ´still up for VAR´ despite disallowed goal at Huddersfield|
|Valverde: Barcelona had to suffer at Eibar|
|Championship Review: Fulham end Villa run, Cardiff pounce|
|Resilient Kvitova ousts Wozniacki in Doha thriller|
|Huddersfield Town 0 Manchester United 2: Lukaku sends visitors through after VAR controversy|