Sam Curran (four for 74) made a sterling home bid for the headlines, with three wickets in eight balls during a titanic first hour of the afternoon – and England were well-served too by Ben Stokes and James Anderson.
But Kohli (149) was an unstoppable force – after two dropped chances – as he banished memories of his miserable maiden Test tour to this country four years ago – when he averaged 13.4, with a top-score of 39 – as he compiled his 22nd Test century in an India total of 274 which contained no other innings above 26.
Kohli’s one-man show meant a home lead of only 13 after the tourists’ last two wickets added 92 – and when Alastair Cook was bowled for the second day in succession by a Ravi Ashwin off-break, for a duck this time, England reached stumps nine for one second time round.
The India captain attracted an outbreak of partisan boos when he walked out at 54 for two, thanks to his controversial ‘send-off’ after running out his opposite number Joe Root the previous day.
But 172 balls later, he had the last laugh – amid another energetic celebration – after cutting Stokes for his 14th four to reach three-figures as he dominated a last-wicket stand of 57 in which Umesh Yadav made just an unbeaten single.
India’s reply to 287 all out was eventful from the outset, but they nonetheless reached 50 without loss.
Curran – who had earlier failed to add to his overnight 24 as England mustered just two extra runs for their last remaining wicket – then quickly proved a dab-hand in helpful conditions.
Murali Vijay was pinned lbw, KL Rahul dragged his second ball on to his stumps, and then Dhawan edged to second slip.
After lunch Stokes soon proved he could swing the ball just as effectively as Curran, only faster.
While India were stuck on 100 for 21 balls, a full match quota of incident took place.
Two wickets, two dropped catches and Hardik Pandya’s overturned review on nought is the synopsis of a mesmeric passage of play.
Anderson’s long-awaited duel with Kohli culminated in an edge to second slip on 21, only for Dawid Malan to put down a costly low catch.
One ball later, Pandya – still on nought – this time edged to Cook at first slip, and another chance went begging.
England therefore just had two successes to show for their compelling hour of cricket.
Ajinkya Rahane had tried to leave one that bounced on him from Stokes, and managed only to edge to Keaton Jennings at third slip.
Then Dinesh Karthik lost his middle-stump to an inswinger which brought Stokes his 100th Test wicket.
It was testament to Kohli’s great determination, skill and some good fortune that he survived when it seemed at one point a wicket was odds-on every ball.
He did so again, immediately after reaching his half-century with his ninth four, when he was again dropped by Malan in the slips – a much tougher chance than the previous, off Stokes.
After tea, Anderson finally had deserved reward with a dead-eyed delivery which took the off-bail as Ashwin played inside the line – and when a driving
Mohammed Shami edged him to Malan, India were eight down and still 105 runs behind.
But Kohli was far from done as he went on to better his 2014 tour aggregate in just one attempt before finally cutting Adil Rashid into the hands of point to leave England’s openers 3.4 overs of aggravation – time for Cook to find trouble again.
India’s openers Shikhar Dhawan and Murali Vijay started well with the bat as they put on a 50-run stand for the first wicket before Sam Curran ran through the top-order with a three-wicket burst. The youngster dismissed Vijay and KL Rahul in the same over before getting the better of Dhawan in his next. India were batting at 76-3 when lunch was taken.
The visitors lost Ajinkya Rahane shortly into the second session after he was caught at third slip off the bowling of Ben Stokes. The England all-rounder then bagged his 100th Test wicket as he shattered the stumps of Dinesh Karthik to leave India reeling at 100-5. Since the fall of those wickets, Virat Kohli and Hardik Pandya have been put through a testing spell by the England pacers.
Pandya was dismissed just before tea while Kohli notched up his maiden half-century in England. India were 160-6 at the time tea was taken. A seventh wicket in the form of Ravi Ashwin fell after tea as James Anderson got his name into the wicket-taking column. Anderson then had a second of the day when he saw the back of Mohammed Shami. With last man Umesh Yadav or company, Kohli bought up a special century with a boundary off Stokes. The India skipper battled on with Yadav in tow and was finally dismissed one run short of his 150 as England took a 13-run lead in the first innings.
Ravichandran Ashwin then dismissed Alastair Cook in exactly the same fashion as he did in the first innings as England lost an early wicket before stumps were drawn.
Earlier, England were dismissed for 287 on the second day of the first Test against India at Edgbaston on Thursday.
It took India just 10 balls on Thursday to wrap up the hosts’ first innings after England resumed on 285 for nine. Sam Curran fell for his overnight 24 after edging Mohammad Shami to wicket-keeper Dinesh Karthik.
James Anderson was two not out.
England, who won the toss, had been well-placed at 216 for three on Wednesday thanks to a stand of 104 between captain Joe Root (80) and Yorkshire team-mate Jonny Bairstow (70).
But the run out of Root by opposing captain Virat Kohli, who gave his England counterpart a colourful send-off that could yet land him in trouble with the match referee, changed the course of the first day’s play.
His exit, in England’s 1,000th Test, sparked an all-too familiar batting collapse with the hosts losing six wickets for 67 runs.
India off-spinner Ravichandran Ashwin, belying his reputation for being a far worse performer outside the sub-continent, took four wickets on the first day and finished with innings figures of four for 62 in 26 overs.
Meanwhile paceman Shami took three for 64 in 19.4 overs. This is the first of a five-match series.
Catch all the live updates from the Test below.
Root was set to score his first Test century since last year but was run out for 80 when Kohli’s direct hit saw him dismissed.
Kohli blew kisses towards Root before also imitating Root’s celebration of the ‘mic drop’ after the Englishman’s unbeaten ton had sealed the ODI series last month.
It was the start of a collapse for the hosts as England lost six wickets for 67 runs as they reached stumps on 285-9. They eventually ended their innings on 287 in the first session on Thursday.
Speaking to BBC Radio’s Test Match Special in an interview broadcast on Thursday, Root said: “I didn’t see it at the time but I saw it last night.
“It actually adds to the theatre of the game. It’s good to have those little moments within things. I thought it was quite funny.”
He added: “I’m sure within the five-match series there will be plenty of that stuff going on. It adds to the whole drama of this series.”
“We’ll have to wait and see. I can’t see it becoming an issue throughout this game or moving forward.
“But it makes entertaining cricket for everyone to watch, which is exactly what you want in Test cricket.”