The team will now play England or Australia in the final at Lord's on Sunday.
New Zealand reached a second straight Cricket World Cup final after late half-centuries by Ravindra Jadeja and MS Dhoni narrowly failed to make up for an unprecedented top-order collapse by India in its 18-run loss on Wednesday.
Chasing 240 to win on the reserve day of a rain-hit semifinal at Old Trafford, India plunged to 5-3 — the top three of Rohit Sharma, KL Rahul and Virat Kohli were dismissed for 1 each — after 17 balls of the reply and then 24-4, after Jimmy Neesham's sensational one-handed catch removed Dinesh Karthik (6).
Dhoni (50) and Jadeja (77 in 59 balls) gave India hope by putting on a World Cup-record 116 for the seventh wicket but they were both dismissed, leaving the team needing 23 off the final over.
India was bowled out for 221 with three balls remaining.
New Zealand will play England or Australia in the final at Lord's on Sunday. The second semifinal is at Edgbaston on Thursday. If Australia wins, it will be a repeat of the 2015 final won by the Australians in Melbourne.
TRT World's Lance Santos has more.
1 for 3
The way the chase panned out vindicated New Zealand captain Kane Williamson's attritional approach to batting on difficult conditions on Tuesday, which ended prematurely because of rain with the Blacks Caps 211-5 with 3.5 overs remaining.
New Zealand scored 28 runs after the resumption under cloudy but brightening skies, finishing on 239-8. India was a marginal favourite but then came the meltdown.
For the first time in international history, a team lost its first three batsmen all for 1 as India saw Sharma, Kohli then Rahul depart in the space of 10 balls and was marooned on 5-3 after 3.1 overs.
Sharma, the Cricket World Cup's top run-scorer with 648, edged Matt Henry behind off the fourth ball of his innings. It was his shortest ODI innings since the 2017 Champion Trophy.
Kohli only lasted six balls, before he was trapped lbw by Trent Boult. The India captain reviewed the decision but replays showed the ball was clipping the bails and Kohli tossed his bat into the air in disgust.
Rahul also edged behind off Henry, who had figures of 3-15 in five overs. It was then the turn of spinner Mitchell Santner to tie down the middle order in a spell of 2-6 off seven overs, during which he dismissed Risbabh Pant and Hardik Pandya each for 32.
That brought Dhoni and Jadeja together and they nearly saw India home in an improbably nerve-racking finish in Manchester.
Jadeja struck four sixes and four fours in a measured innings but when he mistimed a shot off Boult, Williamson took a catch, India was 208-7 with 13 balls left and the chasers had lost their big-hitter.
Dhoni went in the next over and India ran out of deliveries to make a shock exit from the tournament.