Hardik Pandya took five wickets and debutant wicket-keeper Rishabh Pant claimed five catches before India's batsmen piled on the agony for England in the third Test at Trent Bridge.
India were 124 for two in their second innings at stumps on Sunday's second day, an already commanding lead of 292 runs in a game where victory would see them keep the series alive at 2-1 down in a five-match contest.
Cheteshwar Pujara was 33 not out and India captain Virat Kohli, whose 97 was key to his side's first-innings 329, eight not out with three days left in the game.
Earlier, England collapsed to 161 all out in a first innings that lasted a mere 38.2 overs.
All-rounder Pandya took five wickets for 28 runs in six overs, including four for eight in 11 balls, as he revelled in the swing-friendly conditions.
This was the second time this year that England had lost all 10 wickets inside a session of Test cricket following an embarrassing 58 all out against New Zealand in Auckland in March.
The irony was that England enjoyed a solid opening partnership to be 54 without loss.
But the exit of left-handers Alastair Cook (29) and Keaton Jennings (20) on that total sparked a collapse that saw eight wickets lost for 74 runs.
Only Jos Buttler's 39 kept India at bay and denied Kohli the chance of enforcing the follow-on.
Admittedly, the overcast conditions made batting difficult, but England's top-order problems run deeper than bad luck with the weather.
When Cook edged Ishant Sharma to give Pant an easy first Test catch it meant England's all-time leading Test run-scorer had made 252 runs in the format at a meagre average of 19.38 this year.
Next ball, Jennings, one of 12 batsmen to have opened in Tests with Cook since Andrew Strauss retired six years ago, was squared up by the recalled Jasprit Bumrah and nicked to Pant.
New batsman Ollie Pope fell for 10 when a genuine glance off Sharma was well caught down the legside by the 20-year-old keeper.
England captain Joe Root only managed 16 before he edged all-rounder Pandya's first ball low to KL Rahul at second slip.
The umpires called for a review but made a 'soft signal' of out and the on-field call was upheld.
Ben Stokes, recalled just days after being acquitted of an affray charge on Tuesday following an incident outside a Bristol nightclub in September last year, walked out to a few boos from the crowd.
He could only manage 10 before an edge off paceman Mohammed Shami flew waist-high to Rahul.
Chris Woakes had bailed out the top-order with a maiden Test century in England's innings and 159-run win at Lord's last week.
But trying to hook Pandya on eight, he got a top edge and Pant, going down the legside, changed direction and lept back to his right before holding a brilliant one-handed catch.
England were now 118 for seven.
The first ball of Pandya's next over saw Adil Rashid well caught by Pant, two-handed this time.
Stuart Broad survived the hat-trick ball but was still out for a duck, the left-hander plumb lbw to a Pandya inswinger.
At 128 for nine, England still needed two more runs to avoid the follow-on.
They got them when Buttler's leading edge off Shami just cleared Ajinkya Rahane at cover-point.
Buttler, with just last man James Anderson for company, hooked and drove sixes off Shami and Sharma respectively before he holed out off Bumrah.
India's openers put on a brisk 60 before Rahul (36) deflected a drive off Stokes onto his stumps and Shikhar Dhawan (44) was stumped by Bairstow off leg-spinner Rashid.
But when play ended in bright sunshine, England needed to surpass the record fourth innings score to win a Test at Trent Bridge, their own 284 for six against New Zealand in 2004, to achieve an improbable success.