India 393 (Rahul 108, Rohit 79, Kohli 78, Herath 4-81) and 325 for 8 dec. (Rahane 126, Vijay 82, Prasad 4-43, Kaushal 4-118) beat Sri Lanka 306 (Mathews 102, Thirimanne 62, Mishra 4-43) and 134 (Karunaratne 46, Ashwin 5-42, Mishra 3-29) by 278 runs
It had been more than a year since India last won a Test match, at Lord's in 2014, but the final lap of their long wait zipped past quicker than anyone would have expected. Seven balls after lunch on the fifth day,
Dushmantha Chameera padded up to an Amit Mishra googly. Mishra spun around in appeal; Rod Tucker's finger went up immediately.
With that, the series was level. Sri Lanka had lost their last eight wickets for 62 runs. Worryingly, for a side that is losing perhaps its greatest-ever batsman to retirement, the collapse only continued a trend: they had lost their last seven wickets for 65 runs in the first innings.
If there were any furrows on Virat Kohli's brow while he chased his first win as India's Test captain, they weren't caused by a Sri Lankan batsman. If they appeared at all, they did so only when rain fell with the last pair at the crease to bring the covers onto the field and hasten the lunch break by 10 minutes.
For the second time in the match, India's attack refused to release the pressure on the batsmen.
R Ashwin, who had taken the first two Sri Lankan wickets on the fourth evening, picked up his 12th five-for in Test cricket, but the other three specialist bowlers contributed significantly as well.
Angelo Mathews, first-innings centurion and 23 overnight, loomed as the biggest obstacle in India's path to victory, but they saw his back at the earliest possible moment.
Umesh Yadav had troubled him right through the first innings, opening him up constantly with his away movement from a good length.
But while he had survived those deliveries by playing inside the line, his hands followed the ball this time, and KL Rahul dived to his right to pouch him behind the stumps.
Amit Mishra was the next bowler to get on the scorecard. Dinesh Chandimal had made 15 in his usual manner, which spans the spectrum from busy to edgy, before the legspinner's drift undid him.
Shaping to sweep, he ended up playing down the wrong line as the ball swerved down the leg side and turned sharply to hit leg and middle stumps.
Lahiru Thirimanne had looked entirely at sea against Ashwin.
In the 12th over of the morning, he beat him twice with his offbreak - once when the batsman was on the back foot, with a slow, loopy delivery; once on the front foot with a quicker, flatter ball that turned just as much - and nearly had him lbw when he played back to his arm ball.
He wouldn't be denied for too much longer. In his next over, Thirimanne stepped out to Ashwin, didn't get to the pitch of the ball, closed his face too early, and popped a catch to silly point.
Ishant Sharma was the next Indian bowler on the scorecard. He had jagged one back four overs ago to hit Dimuth Karunaratne's pad - height saved the batsman - and that may have prompted Jehan Mubarak to poke nervously at a ball angling away from him.
Virat Kohli, standing a couple of steps closer than normal at second slip, took a good low catch.
Karunaratne had struggled against Ashwin all through the fourth evening, but having survived that spell was looking likely to carry his bat - particularly when Dhammika Prasad, the most capable of the tailenders, holed out slogging at Ashwin.
That didn't materialise, however, as he went back to another of Ashwin's arm balls, misreading the length of it. It hurried through and bowled him off the pad.
The end looked near when Mishra had Tharindu Kaushal - who had been bruised on the glove by an Umesh bouncer in the previous over - lbw with a googly.
It could have been all over next ball, when Dushmantha Chameera prodded forward uncertainly to another wrong 'un, but this time umpire Rod Tucker judged that the ball may have missed leg stump.
A drizzle had already begun, and intensified rapidly over the first three balls of the next over. Off went the players, and on came the covers. India would have to wait just a little longer.