Ravichandran Ashwin spun a web around Sri Lanka's batsmen to claim a six-wicket haul as India dismissed the hosts for a paltry 183 in the first innings to gain the upper hand on the opening day of the first Test in Galle on Wednesday.
In taking six wickets for 46 runs (13.4 overs), the off-spinner registered his best overseas figures to trigger a collapse that saw the islanders being shot out in just 49.4 overs in their first innings after skipper Angelo Mathews opted to make first use of a track that had turn on offer on the first day itself.
At stumps, India were 128 for two after opener KL Rahul (7) and Rohit Sharma (9) were dismissed cheaply.
Shikhar Dhawan continued from where he left off in Bangladesh as he stroked his way to an unbeaten 53, while skipper Virat Kohli looked supremely confident during his undefeated knock of 45.
India are only 55 runs short of Sri Lanka's first innings total and will be looking to build a sizable lead.
The first day panned out exactly the way skipper Kohli may have wanted it to.
Ishant Sharma (1-30) bowled a good opening spell where he hit the deck hard to extract disconcerting bounce. One such delivery that took off from short of good length saw left-hander Dimuth Karunaratne (9) fend awkwardly at it and Ajinkya Rahane took a simple catch, running forward from gully.
Kaushal Silva (5) was a touch unlucky after Dhawan had earlier dropped a dolly at first slip off Varun Aaron's (1-68) bowling. This time the ball was dug short and Silva wanted to pull, but the ball hit his arm guard and Dhawan ran back, dived and took the catch. Replays showed that umpire Nigel Llong got it wrong.
Once Ashwin was brought into the attack in the 12th over he completely stamped his supremacy on the islanders. Kumar Sangakkara (5) had a forgettable first innings in his penultimate Test as he tried to push an off-break off the back-foot and young Rahul took a sharp catch at silly point.
With Sri Lanka reduced to 27 for three, it became increasingly difficult for them to claw their way back into the game.
Vice-captain Lahiru Thirimanne (13) pushed at an off-break and Rahane at first slip pouched it.
Jehan Mubarak (0) did not trouble the scorers as he was snapped by Rahul at forward short leg, leaving hosts at 60 for five.
They went into the lunch precariously placed at 65 for five.
However, skipper Mathews 64 off 92 balls, with six boundaries and a six, along with the talented Dinesh Chandimal (59) added 79 runs for the sixth wicket as the Lankans showed signs of revival in the post-lunch session.
They were helped by the fact that Wriddhiman Saha dropped a sitter presented by Chandimal off Ishant's bowling.
Harbhajan Singh (0/17) hardly looked incisive during the eight overs he bowled. Although the only big hit off him was a six down the ground by Mathews, the 'Turbanator' was not a threat.
Amit Mishra wasn’t that effective and both his wickets came by virtue of dismissing tail-enders.
Ashwin again put a spanner on the home team's revival hopes as Mathews tried to whip an off-break and Rohit Sharma, standing at forward short leg, took the catch on second attempt.
At 139 for six, Chandimal started a counter attack, hitting the profligate Aaron for four boundaries in an over as he also completed his half-century.
However at 155, Dhamika Prasad (0) was trapped plumb in front by a classical off-break from Ashwin.
Rangana Herath (23) then helped himself to a few slogged boundaries but Chandimal after a well-made 59 lost his patience trying to hit Mishra out of attack and was caught at first slip.
Tharindu Kaushal (0) was Mishra's second victim while Ashwin capped off a good day when Herath's cross batted heave saw the stumps disturbed.
When India batted, Prasad first trapped Rahul leg before in the third over and then troubled number three batsman Rohit Sharma (9) also.
He then trapped Rohit leg before with an in-swinger, the same delivery with which he had dismissed Rahul, in the ninth over of the innings, but umpire Bruce Oxenford overturned his decision after checking for a no-ball.
The batsman was on eight then, but could not make it count as he was dismissed in the next over, this time trapped leg before by skipper Mathews (1-12).
Dhawan, meanwhile, made a watchful start against Prasad, but was severe on his new-ball partner, Nuwan Pradeep (0-32).
He hit four boundaries off him in the initial spell and helped the score move along.
When Kohli came to the crease, India were placed at 28/2, but together they batted watchfully against the combination of pace and spin.
Off-spinner Kaushal occasionally troubled the batsmen, but lacked the control as shown earlier by Ashwin.
Later, Rangana Herath was introduced into the attack, but the two batsmen were well set by then.
India’s first fifty runs came in only 13.2 overs, and then the two batsmen brought up the 100-run mark in the 27th.
There were a couple hiccups on the way, though. In the 18th over, Dhawan, on 28 was dropped off Kaushal by Mathews at slip, and then Kohli, on 17, gave a tough chance to short leg off Herath in his very first over.
In the 22nd over, there was a mix-up between the two as well, but Lanka missed the run-out chance. Dhawan then brought up his third Test fifty off 92 balls in the 31st over of the innings, and the two batsmen saw off the day without any further damage.