Sri Lanka clung on to draw the first Test against India after Bhuvneshwar Kumar went close to inspiring a sensational last-day win for the hosts in Kolkata.
After Shikhar Dhawan and KL Rahul led a fourth-day recovery for India, captain Virat Kohli scored his 50th international century - naturally in record fashion - to give the hosts a faint sniff of victory with a session and a bit to bowl Sri Lanka out.
Kohli reached three figures with a six before India declared on 352-8, setting their opponents 231 to win with 40 overs remaining.
With bad light bringing the previous four days to a premature close, it never looked likely, but Bhuvneshwar delivered a brilliant performance, taking 4-8, while Mohammed Shami took two more wickets in a blistering support act to reduce Sri Lanka to 75-7 from just 26.3 overs before the light curtailed any further excitement.
After having the best of the first three days in this contest, such a collapse will not do Sri Lanka's confidence any good as the three-match series next heads for Nagpur.
But India will be brimming after the performances of their bowlers and captain Kohli, whose half-century of international hundreds came in his 348th appearance - level with the record-holder, Hashim Amla.
In worsening conditions for batting, Kohli's knock oozed class, displaying not only his apex technique but also battling qualities.
The skipper got off a pair as he gloved Suranga Lakmal over wicketkeeper Niroshan Dickwella for four, but the Sri Lanka paceman was causing Kohli and Cheteshwar Pujara - who batted on every day of this Test - serious problems, having earlier bowled Rahul for 79.
Lakmal finally had his reward taking Pujara (22) and Ajinkya Rahane (0) in the same over, and Kohli regularly lost partners while scratching his way through his innings.
But Sri Lanka's decision to immediately take the new ball backfired as Kohli accelerated from 58 of 93 balls to a century from just 26 more, spanking Lakmal over extra cover and then heading to the dressing room.
After heavy rain on day one, India had been reduced to 50-5 on the second morning of this Test, but incredibly had a chance of winning the contest when Bhuvneshwar and Shami reduced Sri Lanka to 22-4 inside 12 overs.
Knocks of 20 from Dinesh Chandimal and 27 by Dickwella would ultimately prove vital, just holding the Indian charge up enough.
Dickwella survived a catch behind on review and Dilruwan Perera survived a DRS for lbw before Bhuvneshwar flattened his off-stump, but umpires Nigel Llong and Joel Wilson convened midway through the 26th over with the light meter before Kohli shook hands with the Sri Lanka batsmen, who had escaped an almighty scare.
|Thomas makes it back-to-back wins|
|Ramos may remain for Spain but Luis Enrique promising surprises|
|Cazorla still playing through pain after Villarreal appearance|
|Vegas to Carnoustie - a hellish trip for Jhonattan|
|NFL training camp 2018: Five under-the-radar rookies to watch|
|Woods off to a flyer as Thomas charges|
|Sanchez given green light to join Man Utd tour|
|Greipel, Groenewegen and Gaviria latest sprinters to abandon Tour de France|
|Luis Enrique hopeful over Pique as he plots a Spanish evolution|
|I had a brain fart - Spieth disappointed with missed opportunity|
|I´ve sacrificed too much to quit, says injury-plagued Rossi|
|Klopp rejects Henderson´s plea to return early to Liverpool training|
|Open champion Spieth loses ground in scrappy finish|
|Alexis Sanchez hints visa issue sorted as United States trip beckons|
|Kovac an admirer of Pavard, expects James to stay|
|Dzeko happy at Roma and eyeing silverware|
|Eels win basement battle with Bulldogs|
|Kluivert to follow Totti´s example after taking ´big step´ with Roma|
|Kisner hopes to return Claret Jug favour to Spieth|
|FIBA bans 13 players & two coaches over Philippines-Australia brawl|
|Spieth and Rahm in the mix as Kisner sets the target|
|Monchi insists Roma remain ambitious as Liverpool close in on Alisson|
|Cavendish thanks ´race that shaped career & heart´ after cruel Tour exit|
|No Trent Bridge Ashes Test as England confirm schedule|
|Ajax tell Barcelona not even ´insane´ money will buy De Ligt, De Jong|
|Hamilton agrees two-year Mercedes extension|
|Uran withdraws from Tour after failing to shake off injuries|
|Spieth tees off Open defence|
|Zidane has shown no will to coach France, insists FFF president|
|Risking the curse - Steelers star Brown lands on Madden 19 cover|
|Pogba silenced his critics with World Cup displays – Ibrahimovic|
|Warburton overwhelmed by support following retirement|
|Wilshere excited by tactics of Wenger-like Pellegrini|
|Deschamps never considered France exit prior to World Cup win|
|Persepolis eye Champions League after Iran impress at World Cup|
|Sandy Lyle gets The Open underway at Carnoustie|
|Roosters sign England international Hall|
|Ovechkin, Kim earn major honours at ESPY Awards|
|Owens not ´actively seeking´ to play in NFL again|
|Argentina need Messi – Tevez urges Lionel not to retire|
|Minnesota United 2 New England Revolution 1: Ramirez, Quintero sink stuttering visitors|
|Shaw: I want to be first name on Man United teamsheet|
|Manny Machado dealt to Dodgers|
|Pjanic hails Ronaldo arrival but refuses to confirm Juve future|
|Perotti: Roma can cope without Liverpool-bound Alisson|
|Klopp hopes Liverpool building towards title tilt|
|Karlovic exits as four seeds bow out in Newport|
|Angels clap back at Manfred´s marketing comments on Trout|
|Titans DL Casey will still protest despite new anthem policy|
|Popovich on Leonard trade: It´s time to move on|
|Zola returns to Chelsea as Sarri´s assistant|
|Anthony Joshua targets ´dream´ fight in Texas|
|Celtic 3 Alashkert 0 (6-0 agg): Dembele hits brace before injury worry|
|Schwartzman stumbles but Spanish duo reach last eight at Swedish Open|
|Top seeds progress in Bucharest as Larsson conquers Kung|
|Perez promises ´incredible´ signings at Real Madrid|
|Liverpool need a top goalkeeper - Souness|
|It was just an absolute car crash - Root regrets bat-drop celebration|
|Mourinho´s pre-season fears mount with Sanchez sidelined|
|Alisson thanks Roma fans ahead of rumoured Liverpool switch|
|Pogba must understand his World Cup heroics, says Mourinho|
|Odriozola excited by Lopetegui reunion at Real Madrid|
|Revis announces retirement from NFL after 11 seasons|
|The Open 2018 diary: Rahm´s saving Grace, Rory´s going grey|
|Kawhi Leonard traded to Raptors as DeMar DeRozan heads to Spurs|
|Cantona, Rosberg and other surprise retirements after Warburton hangs up his boots|
|No doubting Thomas as he climbs into yellow with stage win|
|Liverpool´s Oxlade-Chamberlain to miss ´vast majority´ of 2018-19|
|Open Championship by far the greatest - Player|
|Sarri wants new central midfielder and hints at Chelsea stay for Cahill|