Chasing 147 for the win, the hosts had been skittled out for 121 in the course of the afternoon session, with spinner Ajaz Patel taking 6-57.
India seemed on track for a good heavier defeat once they slipped to 29-5, earlier than a punchy half-century from Rishabh Pant gave them hope.
However Pant’s dismissal for 64 shortly after lunch noticed New Zealand regain a grip on the match that they by no means relinquished.
Pant was given not out on the sphere however the determination was overturned by the TV umpire, who determined after a number of replays that the ball had brushed his bat earlier than clipping the pad on the best way by to wicketkeeper Tom Blundell.
That left India reeling on 106-7 and so they added simply 15 runs for the ultimate three wickets, with Patel wrapping up the win to finish with match figures of 11-160.
New Zealand had begun the day on 171-9 however added simply three runs earlier than Patel was dismissed by Ravindra Jadeja, who took 5-55 to finish with match figures of 10-120.
The win retains New Zealand’s hopes of reaching the World Check Championship last in June alive, however has severely dented India’s possibilities of reaching it for the third successive time.