Cheteshwar Pujara och Ajinkya Rahane båda slog århundraden som Indien postade 622-9 deklareras i deras första innings.
Sri Lanka var aldrig i spelet en gång de bowled ut för 183 i svar.
De lyckades 386 i sin andra innings - Dimuth Karunaratne gör 141 - men Indiens spinnare förseglade seger på den fjärde eftermiddagen.
Ravindra Jadeja plockade upp man-of-the-match utmärkelsen efter att ha slagit en unbeaten 70 off 85 bollar vid nummer nio innan han tog 2-84 och 5-152 med bollen.
Indien vann första testet i Galle med 304 körningar. Det tredje och sista testet pågår i Pallekele den 12 augusti.
Jadeja kommer att missa matchen efter att han blev avstängd för ett brott mot Internationella Cricketrådets disciplinära kod.
Den allrounder erkände sig skyldig till anklagelsen, som handlade om att kasta bollen "på ett farligt sätt" mot Karunaratne som han fält av sin egen bowling på dag tre.
Han förlorade 50% av sin match avgift och tjänade tre demerit poäng, tar honom till totalt sex under de senaste två åren, vilket leder till ett enda spel förbud.
Indien avslutade en serie seger över Sri Lanka med en förkrossande seger av en innings och 53 körs i den andra testet i Colombo.