Sri Lanka, set a target of 472 runs for victory, were all out for 236, giving India their first win in Sri Lanka and the fourth overall against their neighbours. It was also India's first overseas win since they defeated England at Lord's in 1986.
Aravinda de Silva made a determined effort to stave off defeat but succumbed to the right-arm leg-spinner, Anil Kumble, seven short of his sixth Test century and maiden Test century at home.
Victory, and a 1-0 lead in the three- Test series, arrived 50 minutes after tea on the final day when Kumble trapped the tail-ender, Pramodya Wickremasinghe, for four.
However, it was De Silva's dismissal by Kumble, one of the heroes of India's 3-0 triumph over England earlier in the year, that ensured victory. De Silva, coming into bat at the fall of the second wicket at 59, was ninth out at 229 when he attempted to sweep Kumble and top-edged a catch to the Indian captain, Mohammad Azharuddin, at slip, who had to run backwards to hold it.
De Silva had defied the Indian bowlers for 331 minutes and 268 balls for his 93 which included 16 fours.
India broke through in the afternoon session when they took the second new ball at 174 for 3.
Manoj Prabhakar, who won the man of the match award, struck, when off the ninth delivery with it, when he had the Sri Lankan captain, Arjuna Ranatunga, caught behind for 14.
The dismissal started a minor collapse with three further wickets falling for 18 runs in eight overs. Prabhakar finished with figures of 3 for 49, while Kumble's match haul of 8 for 172 clinched the best bowler's award.
' This was one of my best wins. I got excellent support from the team,' Azharuddin said.
The third and final Test begins at the Saravanamuttu Stadium on Wednesday. The first was abandoned as a draw because of rain in central Kandy.Reuse content