Colombo: Off-spinner Ravichandran Ashwin caused a dramatic Sri Lanka collapse as India recorded a 278-run win in the second Test in Colombo on Monday.
India level the series 1-1 with one match to play.
Ashwin grabbed a five-wicket haul as Sri Lanka, set an improbable victory target of 413 runs, slumped to 134 in their second innings at the P. Sara Oval.
The hosts lost seven wickets for 56 runs after resuming at 72-2 before heavy rain stopped play just before the end of the morning session.
India spoils Sri Lankan great Kumar Sangakkara farewell in his last international match.
Sri Lanka lost captain Angelo Mathews off the first ball of the day, edging fast bowler Umesh Yadav to stand-in wicketkeeper Lokesh Rahul, who dived to his right to hold a low catch.
First Test hero Dinesh Chandimal began by hooking seamer Ishant Sharma for a six, before he was bowled round his legs by spinner Amit Mishra for 15 to reduce the hosts to 91-4.
It soon became 111-6 as India grabbed two more wickets in the space of five deliveries.
Ashwin had Lahiru Thirimanne snapped up at silly point by substitute fielder Cheteshwar Pujara, and in the next over Ishant Sharma forced Jehan Mubarak to edge a catch to second slip.
The procession back to the pavilion continued when Dhammika Prasad attempted to loft Ashwin out of the ground, but only managed to top-edge a catch to Mishra at mid-on.
Sri Lanka's last recognised batsman Dimuth Karunaratne was bowled by Ashwin for 46.
The final match will be played at SSC ground in Colombo from Friday.
India - 393 (Rahul 108, Rohit 79, Kohli 78, Saha 56, Herath 4-81) and 325/8d (Rahane 126, Vijay 82, Prasad 4-43)
Sri Lanka - 306 (Mathews 102, Thirimanne 62, Silva 51, Mishra 4-43) and 134 (Aswin 5-42, Mishra 3-29)
Result - India won by 278 runs