Put in to bat, New Zealand got off to a horrific start. Shami bowled Finn Allen for a five-ball duck and later accepted a return catch from Daryl Mitchell (1).
Mohammed Siraj (1-10) had Henry Nicholls (2) caught at slip. Hardik Pandya took a splendid one-handed low return catch to dismiss Devon Conway (7).
Shardul Thakur dismissed skipper Tom Latham for one as New Zealand was reduced to 15-5 in 10.3 overs.
Michael Bracewell (22) and Glenn Phillips added 41 runs for the sixth wicket to prevent total embarrassment from the visitors.
Shami had Bracewell caught behind in the 19th over to make it 56-6.
Mitchell Santner (27) added another 47 runs with Phillips as New Zealand crossed 100.
Phillips top-scored with 36 off 52 balls. Pandya bowled Santner to finish with 2-16 from six overs.
Off-spinner Washington Sundar (2-7) picked up two late wickets, including Phillips.
In reply, Sharma and Gill coasted to a 72-run opening stand. Sharma scored his half-century off 47 balls, including seven fours and two sixes. He was out lbw to Henry Shipley (1-29).
Mitchell Santner (1-28) added another wicket as Virat Kohli was stumped for 11 runs.
Gill and Ishan Kishan (8 not out) added the remaining runs to take India to an easy series win.
“They were pretty relentless on the lines and lengths that they bowled and they didn’t give us any easy scoring options,” Black Caps Latham said.
“To be five down early on...it was obviously hard to come back from there. We obviously threatened with a couple of little partnerships, but you know, when you get bowled out for just over 100, obviously makes things pretty difficult. Unfortunately just one of those days where everything that India did turned their way.
“India put us under a lot of pressure and we weren’t able to overcome that unfortunately,” he added.
The third ODI will be played in Indore on Tuesday.