New Zealand seamer Chris Martin stunned India's vaunted batting line-up with a spell of 5-25 to leave the hosts in trouble in the first Test in Ahmedabad.
The match appeared to be meandering towards a draw at tea on day four after Kane Williamson had guided the tourists to safety with a debut century.
Williamson made 131 before New Zealand's last five wickets were nipped out for 42, leaving India with a first innings lead of 28.
But 35-year-old Martin produced a spell to remember as he ripped through the home batting, while the destructive Virender Sehwag was run-out in the second over.
It means India will resume on the fifth morning on 82-6, leading by just 110 with their hopes pinned on VVS Laxman, who remains unbeaten on 34.
Martin took just three balls to begin his onslaught when Gautam Gambhir inside-edged through to wicketkeeper Gareth Hopkins.
Sehwag was then needlessly run out before Martin induced an edge from Rahul Dravid from the last ball before tea, to leave India reeling at two for three.
The right-armer was not finished there, however, and he produced a vicious inswinger to claim the crucial wicket of Sachin Tendulkar for 12 and when Suresh Raina edged to Ross Taylor at first slip for a duck, India were 15-5.
VVS Laxman and Mahendra Singh Dhoni finally brought some sanity to proceedings with a steadying 50-run stand.
But Martin ensured his ninth Test five-wicket haul when Dhoni chopped on for 22.
Laxman kept his cool to negotiate his way to the close while Harbhajan Singh reached 12 to build the lead to 110 runs.
Martin's effort overshadowed Williamson's impressive maiden Test century, the 20-year-old finally succumbing to the last ball of the morning session.
The Black Caps looked as though they could even forge a first innings lead, but Williamson's dismissal - caught by Laxman at slip off spinner Pargyan Ojha - sparked a collapse with Dan Vettori departing straight after lunch.
The New Zealand skipper - who had earlier joined only Ian Botham and Kapil Dev to score 4,00 runs and take 300 wickets in Tests - edged Suresh Raina to Dhoni, before the tail was dismissed in 20 overs.