After restricting New Zealand to 365 in the first innings, the Indians were tottering at 80 for four at one stage before Kohli (93 not out) led the Indian fightback as they reached 283 for five at close on the second day at the Chinnaswamy Stadium.
Suresh Raina (55) and captain Mahendra Singh Dhoni (batting 46) also played an important part in India's recovery. The home side still trail by 82 runs with five first innings wickets intact after a half-and-hour's extended play.
The umpires Ian Gould and Steve Davis decided to extend play as 34 minutes were lost yesterday due to bad light. However, play continued under the lights for the second consecutive day.
Kohli was involved in a crucial 99-run partnership with Raina for the fourth wicket and then put on 104 runs with Dhoni for the unbroken sixth wicket stand.
Kohli initially played a waiting game until he found his bearings and executed some delightful drives early on. Later on, he intermittently raised the tempo scoring couple of boundaries in an over. The Delhi batsman chose loose balls to attack and paced his innings well to see India narrow the deficit.
Kohli brought his fifth Test half century off 100 balls in style by clipping pacer Tim Southee to fine leg fence for four.
New Zealand: Martin Guptill, Brendon McCullum, Kane Williamson, Ross Taylor (c), Daniel Flynn, James Franklin, Kruger van Wyk (wk), Doug Bracewell, Tim Southee, Jeetan Patel, Trent Boult.
India: Pragyan Ojha, Zaheer Khan, Umesh Yadav, Ravichandran Ashwin, Gautam Gambhir, Virender Sehwag, Cheteshwar Pujara, Sachin Tendulkar, Virat Kohli, Suresh Raina, MS Dhoni (c) (wk).