Ben Stokes (four for 40) delivered the telling blows on the fourth morning of the Specsavers series opener at Edgbaston, where Kohli appeared to be leading his team home after adding a second-innings half-century to his tour de force 149 at his first attempt.
But in his first over after replacing James Anderson at the City End, Stokes had the India captain lbw playing across his pad for 51, and then doubled up with the wicket of Mohammed Shami - fencing a catch behind.
Hardik Pandya emerged instead as the only threat to England, but he was last out in a total of 162 when he edged Stokes to Alastair Cook at slip.
India had resumed on 110 for five, with a target of 194 to win and Kohli the key in almost everyone’s mind.
Anderson gave England, and their expectant crowd, a fine start on a sunny morning, but it was not the wicket he told a press conference the previous evening he would go to bed dreaming about.
The immediate prize of Kohli was not to be, but second-best was Dinesh Karthik - ending a troublesome stand of 34 which had narrowed the margins while England’s bowlers tired on Friday.
It was heartening too that when Anderson found the edge, Dawid Malan was safe at second slip.
Malan had dropped Kohli on 21 in the first innings, as well as two others in the match.
But when he held Karthik, he took his ratio to 50-50, with three catches to offset his drops.
It was by design that England limited Kohli to nine deliveries in eight overs at the other end, but a straight-driven four by Pandya off Stuart Broad indicated he had found a plausible new partner.
Kohli brought up his patient, 88-ball half-century with just his fourth four - glanced fine off Anderson - and after two more driven boundaries by Pandya in Broad’s next over, England appeared to be running out of time.
Stokes was having none of that, however.
It took him just three balls to get Kohli, and another three to shift Shami and leave India needing a further 53 from their last two wickets.
At a venue which has seen its share of Test theatre over the years, notably England’s two-run victory over Australia in the 2005 Ashes, there was unsurprisingly still a little way to go.
England captain Joe Root displayed a gambler’s instinct when with 42 needed he brought on leg-spinner Adil Rashid.
It proved wise, though, as Rashid repaid his fellow Yorkshireman with a googly to have Ishant Sharma lbw - confirmed on review.
Then Stokes, who must report to Bristol Crown Court on Monday morning to answer a charge of affray and will therefore miss the second Test at Lord’s, signed off with the last wicket.
:: India seamer Ishant has been fined 15% of his match fee, and received a demerit point, after a Level 1 breach of the International Cricket Council’s code of conduct for his provocative celebration of Malan’s wicket in England’s second innings.