Kohli, 29, reached the landmark with a single off the off the fifth ball of the 119th over, bowled by Suranga Lakmal. This is his fourth hundred against Lanka, and second in two matches.
In the process, the right-handed batsman also went past 3000 runs against Lanka across all formats of the game.
This is also his 10th international hundred in 2017, which is a record for any captain, getting past Ricky Ponting – who hit nine hundreds in a year – twice.
In the series opener in Kolkata, Kohli scored a chanceless second innings hundred to help India chase an improbable win. But the match ended in a thrilling win.
It’s his 12th Test hundred in 49th innings as India captain, getting past Sunil Gavaskar’s 11 in 74. Mohammed Azharuddin has nine in 68, while Sachin Tendulkar has seven in 43.
India resumed Day 3 with the overnight score of 312/2, and Kohli on 54. The skipper added a 183-run stand for the third-wicket partnership, which ended with the departure of Cheteshwar Pujara (143) in the 125th over.
India’s lead at the end of the over was 194.