Axar Patel of India celebrates the wicket of Kane Williamson of New Zealand during their Champions Trophy pool game. Photo: Photosport
Despite some bowling heroics from Matt Henry, the Black Caps lost to India by 44 runs in their final Champions Trophy pool match in Dubai, setting up a semi-final against South Africa.
A New Zealand run chase led by 81 from Kane Williamson crumbled against Indian spin, dismissed for 205 in the 46th over, having initially threatened to run down India's 249-9, with Henry claiming 5-42.
Black Caps captain Mitchell Santner said his team lost their way against some precise Indian spin, led by five wickets from Varun Chakravarthy.
India's spin quartet, who went on to claim nine of the 10 New Zealand wickets, put the squeeze on in the middle overs with Chakravarthy running through the middle and lower order.
"India controlled the middle phase better," Santner said. "It spun a bit more than we thought, and they squeezed us well with four quality spinners."
Unbeaten India finished top of the pool and will face Australia in the first semi-final in Dubai on Tuesday, while the Black Caps face a showdown with the Proteas in Lahore a day later.
On a wicket that was two-paced at times, India were asked to bat and struggled for momentum after Henry reduced them to 30-3.
Virat Kohli of India is dismissed by New Zealand. Photo: Photosport
Henry removed Shubman Gill lbw and dismissed Virat Kohli when Glenn Phillips took a breathtaking catch at backward point leaving the batsman crestfallen.
In between those dismissals, captain Rohit Sharma - who often leads India's powerplay assault - mistimed his pull shot against Kyle Jamieson and returned to the pavilion.
Shreyas Iyer ground out 79 off 98 balls, putting on 98 for the fourth wicket with Axar Patel (42) before Hardik Pandya's late 45 at a run-a-ball ultimately proved important.
New Zealand's pursuit began soundly enough, reaching 93-2 off 25 overs, but Williamson fought a lone hand over the second half as leg-spinner Varun Chakravarthy (5-42) took advantage of helpful pitch conditions.
Williamson was the seventh wicket to fall, ending a stoic 120-ball knock before captain Mitchell Santner went on to post New Zealand's second-biggest score of the day of 28.
Rohit said any win over the Black Caps should be celebrated.
"New Zealand are a good team, who are playing some good cricket," he said. "Very important to get a good result - we played a perfect game."