It's a matter of time as India need another 8 wickets with a day and two sessions of play still left and the hosts needing 465 runs.
Dimuth Karunaratne (44 batting) and Kusal Mendis (24 batting) are at the crease after Mohammed Shami and Umesh Yadav got a wicket apiece.
Earlier India declared their second innings at 240 for 3 after Kohli struck an unbeaten 103 as India quickly added 51 runs to their overnight score of 189 for 3.
And to his credit Kohli didn't waste any time as he reached his hundred off 133 balls in the sixth over of the morning. Overall, Kohli faced 136 balls and hit 5 fours as well as a six.
More From This Section
In doing so, he equalled the records of former Indian skipper Dilip Vengsarkar (116 Tests) and VVS Laxman (134 Tests), who both have 17 Test hundreds.
Kohli and Rahane put on 51 runs for the 4th wicket. In doing so, they became the 14th pair to put up 2000-plus runs in Test cricket for India.
Kohli also became the quickest captain to score 1000 overseas Test runs, reaching the mark in 17 innings. He improved Sachin Tendulkar's record of 19 innings.
Chasing 550 runs then, Sri Lanka were reduced to 29/2 in the sixth over. Upul Tharanga (10) was dropped at second slip by Kohli off Mohammed Shami (1-32) in the third over. But the opener couldn't make it count as he played on two balls later when Shami angled one into him.
Then, Karunaratne and Mendis came together, and the duo improved on their failures in the first innings to put up an improved show.
They added 56 runs for the third wicket on a track that was still not offering enough assistance to the spinners and defied the Indian bowling for 17.2 overs.