Kohli moved from an overnight score of 76 to 103 before declaring with Ajinkya Rahane (23*) joining him in having a dip early on day four.
With nearly two full days left Sri Lanka faced a nearly impossible task and two of the best bowler’s in the world in spinning conditions in Ravichandran Ashwin and Ravindra Jadeja.
Sri Lanka needed to show application but as has been the case for most of the last year it was sorely lacking.
Apart perhaps for Dimuth Karunaratne who ground out 97 off 208 balls, he had little to no assistance though with Upul Tharanga (10) and Danushka Gunathilaka (2) unable to see off the seamers.
Kusal Mendis (36) did well until he poked at one from Jadeja and got a faint edge through the keeper, with Kohli opting to review after a not out decision on the field, ultraedge provided confirmation of a noise as the ball past the bat.
Angelo Mathews (2) attempted a criminal slog across the line to leave the team in all sorts at 116/4.
Niroshan Dickwella (67) was unusually restrained but Ashwin would account for him to expose the lower order.
Dilruwan Perera’s arrival as the last recognized batsman left the game on the brink of an India win.
Karunaratne’s vigil was ended when he was castled by Ashwin before he and spin twin Jadeja wrapped up the tail.
Rangana Herath did not bat after picking up an injury in the field.
India take a 1-0 lead in the three match series.