India's seamers destroyed the Sri Lankan batting to spearhead a 33-run victory in the third one-day international.
Sri Lanka were all out for 204 in 49 overs chasing India's total of 237 for nine.
The win gives India a 2-1 lead in the five-match series.
Only captain Mahela Jayawardene got among the runs for Sri Lanka scoring an elegant 94 off 111 balls with six fours and a six.
Half-centuries from Indian captain Mahendra Singh Dhoni and Suresh Raina steered India to 237 for nine after they had won the toss and decided to bat first.
Raina made 53 off 80 balls, including one six and four fours, before being run out after a misunderstanding with his captain. Dhoni made 76.
The fourth match of the series is on Tuesday at the same venue