Chester-le-Street - England's World Cup hopes were in the balance on Wednesday after New Zealand fought back following opener Jonny Bairstow's second successive century of the tournament.
The hosts, in a match where victory for either side would see them into the semi-finals, were set for a huge total at 194-1 off 30 overs at Chester-le-Street.
But in the last 20 overs they managed just 111 runs and lost seven wickets against a Black Caps attack missing star fast bowler Lockie Ferguson, out with a hamstring injury, to finish on 305-8.
England captain Eoin Morgan revived the innings with 42 and an eighth-wicket partnership of 29 between Liam Plunkett (15 not out) and Adil Rashid (16) ensured the hosts went past 300.
New Zealand were left with a stiff, but not impossible, chase, given the most any team have made batting second to win a World Cup match is Ireland's 329-7 against England at Bangalore in 2011.
"I am really pleased (with the hundred)," said Bairstow. "Obviously I have had a couple of low scores in the competition as well. I felt like I needed to contribute and needed runs. I am disappointed not to go on and get a big one but pleased I got a hundred.
"You want to fire against the best in the world and consistently do it. We know what quality bowling they have got. We will be looking to implement things we have seen in that innings in our bowling innings."
If England lose to New Zealand, they will be knocked out should Pakistan beat Bangladesh at Lord's on Friday.
But if New Zealand, like England looking to win the World Cup for the first time, are defeated, they should still go through to the last four on net run-rate.
Bairstow fell soon after reaching three figures when he played on to recalled paceman Matt Henry for 106.
England's decision to promote Jos Buttler saw the usually free-scoring batsman chip Trent Boult to New Zealand captain Kane Williamson at mid-off for 11.
Ben Stokes came into this match on the back of three successive fifties but he never got going on his Durham home ground, with the all-rounder also out for 11 when he drove left-arm spinner Mitchell Santner to long-on.
Left-hander Morgan, who won the toss, made a valuable contribution before he was well caught at mid-off by a leaping Santner off Henry to leave England 272-7 in the 47th over.
Earlier, Bairstow and fellow opener Jason Roy (60) got England off to a flyer with a partnership of 123 -- their third century stand in a row.
Bairstow drove the experienced Tim Southee -- recalled for his first match of the tournament -- for the only six of the innings to go to 90.
He then completed his ninth one-day international hundred with two boundaries off Southee as he reached three figures in 95 balls, including 14 fours and a six.
But the next over saw Bairstow's Yorkshire team-mate Joe Root caught behind hooking at Boult for 24.
Southee, who took a stunning 7-33 when New Zealand thrashed England in Wellington en route to reaching the 2015 World Cup final, took 1-70 with Henry (2-54) and Boult (2-56) the pick of the attack.