New Zealand fast bowlers Matt Henry and William O'Rourke combined to bowl out India for their lowest-ever home total of 46 on day two of the weather-hit first Test in Bengaluru on Thursday.
India were dismissed in 31.2 overs in the second session after electing to bat in overcast conditions. The opening day of the Test was washed out.
It was India's third-lowest Test score ever.
India's previous lowest at home was 75 against the West Indies in New Delhi in 1987. Their lowest overall is 36 against Australia in a pink-ball Adelaide Test in 2020.
Rishabh Pant top-scored with 20 in an innings that witnessed five ducks, including that of star batsman Virat Kohli.
Henry wrapped up the Indian innings with a five-wicket haul and his last strike of Kuldeep Yadav was his 100th Test wicket.
Tim Southee struck the first blow in the seventh over with the score on nine, bowling India captain Rohit Sharma through the gate with a sharp inswinger after he had made two.
O'Rourke struck in his first over to get Kohli caught at leg gully without adding to the score, silencing a stunned home crowd.
Sarfaraz Khan came in at number four after replacing Shubman Gill, who had neck stiffness.
But he only lasted three balls, with Devon Conway taking a good one-handed catch at wide mid-off to leave India reeling at 10-3 inside 10 overs.
There followed a brief interruption for rain but there was no respite for India when the players returned.
O'Rourke sent back Yashasvi Jaiswal, caught by Ajaz Patel for 13 with the score on 31.
KL Rahul, caught behind by Tom Blundell, was another duck, as India slumped to 33-5, and then 34-6 at lunch.
Wickets continued to tumble and soon after lunch O'Rourke and Henry packed off the remaining four batsmen, assisted by some great catching.