Spinner Anil Kumble took 10 wickets in a match for the eighth time as India beat Sri Lanka by 188 runs to lead its three Test series 1-0 after the second Test in Delhi.
Kumble and fellow spinner Harbhajan Singh ripped through Sri Lanka's batting lineup which collapsed to be dismissed for a total of 247.
The tourists resumed the final day on 123-5 and the match was over shortly after lunch.
Kumble's second innings figures were 4-85, adding to his 6-72 in Sri Lanka's first effort.
Sri Lanka's top scorers in the second innings were Mahela Jayawardene and Marvin Atapattu who at least showed some defiance with 67 runs each.
Jayawardene played a disciplined knock, facing 164 balls. But when he fell to Singh, who took 3-70, India went for the jugular as the last three wickets fell for just four runs.
Set a massive target for victory of 436, it was always going to be difficult for Sri Lanka to conjure up an unlikely first Test match victory on Indian soil.
Indian captain Rahul Dravid declared his team's second innings seven overs after lunch on day four when reaching 375-6, giving India's bowling attack plenty of time to secure the win.
The first Test in Chennai ended in a draw while the third and final match starts in Ahmedabad on Sunday.