New Zealand went to lunch at 87-4, requiring a further 159 runs to make India bat again.
Brendon McCullum was not out 14 with Tom Latham out on the last ball before lunch for 29. Zaheer Khan had taken 3-28.
India need to win the Test to save the series after losing the first Test by 40 runs.
The firm, brown pitch -- a far cry from the juicy green surface of the first day -- was ripe for New Zealand to slowly work off their huge deficit after India made 438 in their first innings in reply to New Zealand's 192.
But Khan had other ideas as he removed New Zealand danger man Kane Williamson and Hamish Rutherford in quick succession.
Williamson, who averaged 53 against the West Indies before Christmas and scored a century in the first Test against India, went cheaply for seven caught behind by Mahendra Singh Donhi.
The Khan-Dhoni combination repeated their success when Rutherford was tempted to wave the bat outside off only to nick the ball, and he was gone for 35.
The 21-year-old Latham, making his Test debut and backing up from a first innings duck, also looked more composed in his second turn at bat.
But in the last ball before lunch he edged Mohammed Shami to Dhoni to continue the New Zealand collapse.