India's Shreyas Iyer smashed a century on his test debut but Tim Southee's lion-hearted bowling and New Zealand's top order left the opening test between the teams evenly poised on Friday.
Southee claimed 5-69, on a track that had prompted both sides to pack three spinners into their respective teams, to bowl out India for 345.
Openers Will Young and Tom Latham then mounted a strong reply for New Zealand who finished day two on 129 for no loss, 216 behind, at Kanpur's Green Park Stadium.
Young was batting on 75, with Latham on 50 at the other end when bad light stopped play.
Young hit 12 boundaries in his assured knock, while Latham's stay was more eventful.
The 29-year-old was given out lbw twice early in his knock but survived as replays confirmed edges before the ball hit his pad on both occasions.
He was adjudged caught behind in the final overs too but once again Latham successfully reviewed the decision to prolong his stay.
India had resumed on 258-4 and all eyes were on Iyer as the 26-year-old, only making his debut with several frontline batsmen rested, approached his hundred.
He showed no nerves and hit Kyle Jamieson (3-91) for back-to-back boundaries and then took two off him to bring up his century, the Mumbai batsman kissing his helmet and raising his arms while the sparse crowd in the stadium cheered.
Southee, who had dismissed Ravindra Jadeja for his overnight score of 50, wrecked India's middle and lower order.
His victims included Iyer, who made 105 before playing a lazy drive that was pouched by Will Young at cover. It was a tame end to an otherwise stellar knock studded with two sixes and 13 boundaries.
Southee, who bowled 11 overs on the trot in the morning session, went on to complete his 13th five-wicket haul in Test cricket.
It was a terrific bowling display by the 32-year-old, who missed part of Thursday's play with a groin strain but returned to torment the Indians after taking pain-killers.
"Having played a bit of cricket, you tend to sort of be able to play through some sort of stiffness and some soreness," he said.
"It's nothing new to be able to play through a little bit of pain...I think the best painkiller is wickets."
Spinner Ajaz Patel removed the last two Indian batsmen as New Zealand conceded 87 runs on Friday to claim the last six wickets.
'Can we call Hardik Pandya an all-rounder?'
Shreyas Iyer slams century on Test debut
Cummins is Australia Test captain; Smith vice-captain
Tim Paine takes 'indefinite mental health break'