Kohli, who became the 12th Indian player – and 71st of all time – to reach 100 Tests was bowled by Lasith Embuldeniya having faced 76 deliveries.
He hit five fours.
Earlier, India skipper Rohit Sharma won the toss and elected to bat.
Kohli, 33, was congratulated by officials at the start of the two-match series at the Punjab Cricket Association Stadium in Mohali.
Coach Rahul Dravid presented Kohli, surrounded by the Indian team and with his Bollywood wife Anushka Sharma beside him, with a special cap.
The 34-year-old Rohit, who last month replaced Kohli as captain across all formats, leads the team in his first Test as captain.
“We want to put up the runs on the board and take the game from there,” Rohit said at the toss.
“It’s a huge honour to captain India, I never dreamt of it. Very much looking forward to it. It’s been quite buzzing, we know it’s a special occasion as not many people go on to play 100 Tests.”
Hanuma Vihari and Shreyas Iyer make the team in place of Cheteshwar Pujara and Ajinkya Rahane.
The match is also a landmark for Sri Lanka, led by Dimuth Karunaratne, who play their 300th Test since starting their five-day journey in 1982.
Rohit Sharma (captain), Mayank Agarwal, Hanuma Vihari, Virat Kohli, Shreyas Iyer, Rishabh Pant (wkt), Ravindra Jadeja, Ravichandran Ashwin, Jayant Yadav, Mohammed Shami, Jasprit Bumrah
Dimuth Karunaratne (captain), Lahiru Thirimanne, Pathum Nissanka, Charith Asalanka, Angelo Mathews, Dhananjaya de Silva, Niroshan Dickwella (wkt), Suranga Lakmal, Vishwa Fernando, Lasith Embuldeniya, Lahiru Kumara
Umpires: Nitin Menon (IND), Virender Sharma (IND)
TV Umpire: Anil Chaudhary (IND)
Match Referee: Javagal Srinath (IND)