Ravichandran Ashwin grabbed four wickets as India crushed Sri Lanka by an innings and 171 runs inside three days to complete their first three-Test series sweep on foreign soil.
Ashwin and paceman Mohammed Shami shared seven wickets as Sri Lanka were bowled out for 181 during their follow-on in an extended second session in Pallekele.
Sri Lanka had crumbled for 135 in response to India's 487 in the first innings, putting the world's top Test team in firm control as early as day two.
All-rounder Hardik Pandya set up the win with his blistering, 96-ball 108, cracking his maiden Test century in just his third game.
Left-arm wrist spinner Kuldeep Yadav turned up the heat with four wickets in Sri Lanka's first innings as the islanders conceded a 352-run first innings lead.
And Ashwin kept up the pressure on the beleaguered hosts, striking the first blow of the morning session by sending back opener Dimuth Karunaratne for 16.
Skipper Dinesh Chandimal, who made 36, provided some resistence during his 65-run fifth-wicket stand with Angelo Mathews.
Kuldeep, playing just his second Test, broke the partnership with Chandimal's wicket just after lunch, and Ashwin soon got Mathews for 35 as Sri Lanka slipped further.
Shami combined with Ashwin to mop up the tail as beleaguered Sri Lanka suffered their second successive innings loss after the Colombo Test.