Forced to follow on, the Sri Lankan batsmen were all out for 386 runs in their second innings on the penultimate day of the Test.
The Indians had declared their first innings at 622/9 while the hosts were all out for 183 in their first innings.
Left-arm spinner Ravindra Jadeja did most of the damage on the day with figures of 5/152. Star off-spinner Ravichandran Ashwin had figures of 2/132 while medium-pacer Hardik Pandya returned 2/31. Fast bowler Umesh Yadav took one wicket.
India have now taken an unassailable 2-0 lead in the three-match series.
Several Sri Lankan batsmen displayed poor selection on a pitch which was offering a fair bit of turn, specially to Ashwin.
Despite being in a position where they needed to play patiently and defend as if their lives depended on it, several Sri Lankan batsmen opted to go for the attacking shots, which proved to be their undoing on quite a few instances.
As a result, the hosts suffered a batting collapse in their lower and middle order, losing their last five wickets for just 76 runs.
Starting the post lunch session at 302/4, Sri Lanka saw their second innings come to an end with only a few overs before the tea break.
Starting the day at the overnight score of 209/2, the Sri Lankans ran into trouble shortly after the start, losing Malinda Pushpakumara (16) and skipper Dinesh Chandimal (2) during the morning session.
Pushpakumara was batting comfortably and hit three boundaries over a patient 58-ball innings.
But all the hard word work was undone when the right-hander decided to reverse his stance to a delivery from Ashwin. His attempted shot missed the ball completely which went on to disturb the stumps.
Chandimal had a lucky escape off the second ball he faced when he edged an Ashwin delivery to the slips. But Ajinkya Rahane was not able to react quickly enough at first slip and the batsmen went for a couple of runs.
But Rahane did not make any mistake in the next over, diving to his right to pull off a low catch at first slip after Jadeja managed to induce an outside edge from Chandimal.
Dimuth Karunaratne and Mathews then batted patiently to frustrate the visitors till lunch.
Karunaratne was the top scorer in the hosts’ second innings. Dropped by Lokesh Rahul at short leg off Jadeja’s bowling when on 95 early in the morning session, Karunaratne went on to score 141 runs off 307 balls with 16 hits to the fence.
He finally fell to a superb ball from Jadeja in the fifth over after lunch with Rahane pulling off another excellent catch in the slips.
Jadeja dusmissed Mathews in his next over. The batsman was outfoxed by some extra bit of bounce as the ball took the edge on its way to the wicket-keeper.
Mathews’ departure saw the Sri Lankan resistance fall apart as the rest of their batsmen failed to deal with the Indian bowling.