Resuming the day at 146/1, India scored 305 runs on Day 3 with the loss of six wickets with skipper Kohli and Jayant Yadav (30 not out) remaining unbeaten to take a lead on 51 runs.
The day was studded with several milestones for Indian cricket which started early in the morning.
After Vijay scored his eighth Test ton, Kohli then became the first Indian batsman since Rahul Dravid in 2011 to score 1000 runs in the longest format of the game in a calendar year. He is only the fourth player, and only non-Englishman, to do so in 2016.
"It was huge (the pressure), and again I backed my ability. I went back home, worked on my basics, and came strong today. I was getting out to short-pitched deliveries and there was a lot of talk about it. I was confident, and came out with an open mind. The basic thing was I did not think too much about it (dismissals to short balls)," Vijay said post stumps.
"We had some momentum with us, the way Virat started was fantastic and the way he ended was even more amazing. The pitch has a lot of assistance for the spinners, hopefully our bowlers can get more. Always great to bat with Pujara and Virat."
Kohli also reached another landmark on Saturday when he went past the 4000-run mark in Test cricket, becoming the sixth fastest Indian to do so.
Later in the day, the New Delhi-born brought up his 15th Test ton - on a day when Sachin Tendulkar had gone past Sunil Gavaskar's record of most Test centuries (34) way back in 2005.
India did not start well on Saturday as Cheteshwar Pujara (47) when Jake Ball picked up the wicket of the right-hander on only the second delivery of the day.
But then Vijay struck a 116-run partnership third-wicket stand with Kohli which not just steadied the ship for India but also gave the hosts the platform to take a big lead against England.
After Vijay fell, England took advantage of the momentum and scalped the wickets of Karun Nair (13), wicketkeeper-batsman Parthiv Patel (15) and Ravichandran Ashwin (0) in quick succession.
India were in a spot of bother at 307/6 but then all-rounder Ravindra Jadeja (25) struck some big blows to strike a 57-run partnership for the seventh wicket.
Though Jadeja fell, Yadav combined with skipper Kohli to take India well beyong England's first innings total of 400 and give the hosts a convincing lead at the end of day's play.
England spinners Moeen Ali, Adil Rashid and Joe Root all picked two wickets each but they failed to bowl out the opposition.