New Zealand's rain-interrupted innings of 271 for seven from 42 overs meant India were set an adjusted target by the Duckworth-Lewis method.
Despite early wickets falling in their reply, India reached 277 for nine and had looked set to claim victory at one stage thanks to Virat Kohli's 78 and captain Mahendra Singh Dhoni's knock of 56.
India got their run chase off to a poor start when Shikhar Dhawan was bowled by Tim Southee (four for 72) for just 12 with 22 runs on the board and Rohit Sharma fell soon after, caught behind off Southee by wicketkeeper Luke Ronchi for 20 as India rocked on 37 for two.
That brought Kohli and Ajinkya Rahane to the crease, and the pair steadied the ship then started piling on the runs as India launched a fightback.
They progressed the score to 127 when Rahane swung at the ball and only succeeded in catching big edge which was snapped up behind by Ronchi for 36.
It was a big scalp and broke the partnership which could have taken the match to New Zealand, bringing Dhoni to the crease with India needing 148 from 87 balls in order to claim victory.
Kohli then holed out at mid-on for 78 from 65 balls as Southee claimed another scalp, putting the pressure of salvaging an unlikely win firmly on the shoulders of Dhoni.
Needing almost 11 runs an over, the task at hand was not simple, but Dhoni and Suresh Raina kept up the pace, flashing several balls to the boundary.
The target dipped below the 100 mark with 57 balls remaining and shortly after India seemed in control as the 200 came up for the loss of four wickets with the pace accelerating all the time.
However, Raina fell for 35 off the bowling of Kyle Mills as India moved to 226 for five, still needing 71 runs from 35 balls.
Ravindra Jadeja came to the crease but the pace did not drop, although Southee put down a catch to dismiss Dhoni on the boundary, with the India captain instead picking up four runs.
However, two quick wickets - Dhoni caught by Kane Williamson for 56 off Corey Anderson (three for 67) and Jadeja bowled by the left-arm quick - put a different complexion on the chase, with India left needing 37 from two overs, with three wickets remaining.
Ashwin holed out off Southee in search of a boundary before Bhuvneshwar Kumar was dismissed by Anderson in six-hitting mode, but the game was over despite Ronchi's dropping of Mohammed Shami when India failed to reach their target from their allotted overs.
Earlier, Williamson had top-scored for the Black Caps with 77 while Ross Taylor also contributed a half-century and Anderson hit a 17-ball 44 as New Zealand put themselves in a commanding position.
India won the toss and put the hosts in and that looked a poor decision initially as the Black Caps clobbered seven off the first over, going on to reach 98 for one before the rain came for the first time after 17 overs.
The second rain break lasted nearly two hours and Williamson was gone soon after as Ravindra Jadeja beat him in the flight as he charged down the track and Dhoni completed the stumping.
Anderson was next at bat and he and Taylor, clearly with the reduced overs in mind, set about hammering New Zealand towards a big total, which in the end proved to be enough for victory.