India's top order collapsed as the Black Caps reached the showpiece match for the second World Cup running, leaving the dreams of Virat Kohli's side and their army of followers in tatters.
With play having carried into the reserve day after rain on Tuesday, the Black Caps resumed on 211-5 and added another 28 runs for the loss of three wickets in 3.5 overs.
That left a tricky winning target of 240 in testing conditions, but India's reply immediately hit trouble in the shape of Matt Henry (3-37) and Trent Boult (2-42), who decimated a usually lethal batting line-up, ensuring Ravindra Jadeja's explosive knock down the order came in a losing effort.
A flurry of wickets in the closing overs saw Kohli's men dismissed for 221, meaning New Zealand will face England or Australia in the final.
— Cricket World Cup (@cricketworldcup) July 10, 2019
By the first delivery of the fourth over, which saw KL Rahul depart for one, India – who topped the group phase – were 5-3 and sliding quickly towards disaster.
The dangerous Rohit Sharma – this tournament's leading run-scorer – had already been sent packing, along with captain Kohli, the pair having only managed to match Rahul's meagre contribution.
Rishabh Pant and Dinesh Karthik were given the task of rebuilding the innings, but the latter was removed by a superb one-handed take from Jimmy Neesham at backward point to give Henry a third wicket of a remarkable start.
Mitchell Santner induced Pant into a boundary attempt that landed in the hands of Colin de Grandhomme, while Hardik Pandya's departure at the hands of the same bowler for 32 left MS Dhoni and Jadeja in the middle.
— BCCI (@BCCI) July 10, 2019
While Dhoni scored at a pace not particularly well suited to the task at hand, Jadeja cut loose, his 77 from 59 balls including four fours and as many maximums.
But Kane Williamson's side brilliantly stemmed the tide and when the captain kept hold of Jadeja's sky-bound stroke from Boult's length delivery it was advantage New Zealand again.
Dhoni came to life with a six off the first ball of the penultimate over as he brought up his 50, but a phenomenal piece of fielding from Martin Guptill had him run out next ball and Bhuvneshwar Kumar was clean bowled soon after to end all hopes of an India triumph.
That was confirmed when Yuzvendra Chahal fell with three balls to spare, completing a remarkable victory for the underdogs, who qualified in fourth spot.
KIWIS WEATHER THE STORM
When this match was brought to a halt by adverse weather on Tuesday, India appeared firm favourites.
Even amid the possibility of chasing a revised target in a 20-over innings, they looked destined for a spot in the World Cup final.
New Zealand, though, clearly used the rain delay – which ultimately ended play for the day – to regroup and ready themselves for a fightback.
After finishing off their own 50 overs with a flourish, albeit at a cost of a few wickets, the way their attack set about getting stuck into India was bold, brave and fully deserving of the rewards it brought.
JADEJA THE UNLUCKY LOSER
He was excellent in the field – the catch to claim the wicket of Tom Latham was sublime – but it was with the bat that Jadeja really caught the eye.
On a pitch where India's leading batsmen struggled to make runs, Jadeja was aggressive and positive from the outset.
He took the weight of India's dire situation on his shoulders and very nearly led a one-man rescue mission.
Had he received any kind of meaningful and long-lasting support, it may well have been a very different outcome.
Photo Getty Images. Caption: New Zealand celebrate against India