India gained a handy 111-run first innings lead but Sri Lanka hit back with three early strikes to roar back into the game on a topsy turvy Day 3 of the third and final Test match in Colombo on 30 August.
On a dramatic day which saw fortune fluctuating from one team to the other, India had the game firmly in control by taking a decent lead which could have been much bigger but for some audacious counter attack by debutant Kusal Perera (55) and Rangana Herath (49). India were then left gasping at a precarious 21 for three in the second innings to allow the islanders to neutralise the advantage.
Captain Virat Kohli (1) and Rohit Sharma (14) were at the crease when play was called off for the day because of rain. It turned out to be a highly eventful day which saw as many as 15 wickets fall at the Sinhalese Sports Club.
Though India had an overall lead of 132 with seven wickets in hand, the series decider was interestingly poised with both the teams in a position to wrap up the series with two full days still left.
Resuming at their overnight score of 292 for eight, India were bowled out for 312 with Cheteshwar Pujara (145 not out) becoming the fourth Indian batsman to carry his bat through. Sunil Gavaskar, Virender Sehwag and Rahul Dravid are the other three batsman, who carried their bat through in an innings.
Paceman Dhamika Prasad was the pick of the Sri Lankan bowlers with 4/100 while left-arm spinner Rangana Herath took 3 for 84.
Sri Lankan first innings were in dire straits as they were tottering at 47 for six at one stage before Perera and Herath launched a gutsy counter attack to put on a 79-run seventh wicket partnership much to the frustration of the Indians.
The hosts were eventually bundled out for 201 shortly after the tea break but the partnership managed to take them to a decent total, which looked highly improbable at one stage.
Lanky pacer Ishant Sharma was the chief wrecker for India with figures of 5 for 54, his seventh five wicket haul in Test cricket. It was also the best performance by an Indian seamer on Sri Lankan soil.
India's second innings got off to a poor start as first innings' centurion Pujara (0) was bowled off the second delivery by Dhammika Prasad (1-8), a near-unplayable inswinging delivery squaring up the batsman.
Nuwan Pradeep (2-6) then made it 2/2 and 7/3, dismissing Lokesh Rahul (2) and Ajinkya Rahane (4) in the space of 12 deliveries.
Both batsmen were dismissed in similar fashion to the first innings. Rahul shouldered arms once again, and was bowled not offering a shot to an inswinger. Rahane too failed to get in line with an incoming delivery and was out LBW plumb. A heavy rain shower then halted play with nearly 23 overs remaining in the day and India in some bother.
Earlier, Sri Lanka were bowled out for 201 runs (52.2 overs) in their first innings in reply to India's first innings total of 312. Starting at 175/8 after tea, Ishant kept the wicket taking even as the bowlers bled runs to the tail-enders.
Herath could only add 2 more runs to his pre-break score, but Prasad (27) and Pradeep (2*) threw their bats around to help Lanka cross the 200-mark in the 52nd over. Prasad was finally dismissed by Amit Mishra (2-25).
This was after Perera's defiant show, which was helped by Herath. Lanka were struggling at 47/5 at lunch and their start after the break wasn't too good either. Ishant removed Lahiru Thirimanne (0) on the second ball after resumption of play, with Rahul catching at second slip. He then hit Prasad (6*) with a bounce the next delivery and the pacer walked off with an injured left hand.
It brought Perera to the crease, and he played a good counter-attacking innings that allowed Lanka to assume a position of safety. Spin was introduced in the 24th over in the form of Ravichandran Ashwin (0-33) but Perera didn't stop his attacking ploy. He put on a quickfire partnership with Herath coming off only 15.1 overs as Lanka's 100-mark came up in the 29th over.
The left-handed debutant also reached his first Test fifty off only 49 balls in that same over.
There were some heated words exchanged between Ishant and the two batsmen, and matters came to a head in the 34th over, after Perera mishit one and was caught at mid-off by Virat Kohli.
In this interim, India had conceded 109 runs for the loss of one wicket, even as Tharindu Kaushal (16) was trapped LBW by Amit Mishra (1-19) close to the break. Injured Prasad then came out to bat once again, and helped his side reach the break without any further losses.
Sri Lanka were in trouble very quickly as they tried to negotiate nearly an hour's play before lunch. Ishant and Umesh Yadav (1-64) made good use of the still-fresh pitch and put the new Kookaburra ball to good effect. The former could have had a wicket in the first over itself, when he induced an edge off Upul Tharanga on 0*, but Rahul dove in front of first slip and dropped the catch.
The two pacers continued to bowl well and beat the batsmen on umpteen occasions, but that one chance wasn't coming. It finally did in the 5th over, when Tharanga (4) edged once again and this time Rahul didn't make any mistake.
There was a slight doubt of a no ball but the decision went in the bowler's favour.
In the next over, Yadav bowled Kaushal Silva (3), the opener dragging a short ball onto his stumps. Chandimal (23) came out to bat at number four then and played some attacking shots. He wasn't fazed by the Indian bowling and hit five quick boundaries off the 27 balls he faced.
But just when it looked like he was set to play a counter-attacking innings like in Galle, he was adjudged LBW to Stuart Binny (2-24) in the 12th over.
The ball hit him high on the back-thigh and it was a poor decision from umpire Rod Tucker as the ball looked to be carrying over stumps. The misery continued for Lanka thereafter as skipper Angelo Mathews (1) was caught behind off Ishant in the 17th over. And Binny took his second wicket in the next over, Dimuth Karunaratne (11) edging to second slip as Rahul took a comfortable catch.
This was after Pujara guided his side to 312 all out (100.1 overs) in the first innings and became the 45th batsman in Test cricket to carry his bat through an innings.
India's first innings came to an end in the seventh over of the day. Starting at their overnight score of 292/8, the visitors were able to add 20 runs before they were bowled out.
Ishant (6) was bowled by Herath (3-84) on the 9th delivery of the morning, the tail-ender looking to go big but completely missing the line.
Four overs later, he also bowled Umesh (4) while India crossed their 300-mark in the 98th over. Prasad (4-100) finished as Lanka's best bowler on display, while Pradeep (1-52), Mathews (1-24) and Kaushal (1-45) also took a wicket each.