An unbeaten century from captain Williamson proves in vain for the hosts.
England beat New Zealand in 'brilliant game of cricket' to take ODI series lead
Ben Stokes' brilliant diving catch proved the catalyst for a spectacular middle-order collapse, while Chris Woakes bowled a superb final over as England beat New Zealand by four runs in their third one-day international on Saturday.
The hosts had looked comfortably placed to chase down England's 234 when Stokes turned the game as spinners Moeen Ali and Adil Rashid took five wickets for 23 runs between them in the space of 41 balls.
New Zealand captain Kane Williamson, who scored his 11th ODI century, however, combined with Mitchell Santner to halt the slide and then gave the hosts hopes of achieving a remarkable win with a 96-run partnership.
Santner was then unluckily run out for 41 when Woakes got his hand to a straight drive from Williamson and deflected the ball back onto the stumps, leaving the all-rounder stranded and New Zealand 199-7 with 4.4 overs remaining.
Tom Curran and Woakes then bowled brilliantly at the death, with the latter restricting Williamson from scoring the 15 runs needed to win in the last over.
Williamson, who needed a six off the final ball to win the game, or a four to secure a tie, failed to make contact and finished 112 not out with his side on 230-8 to leave England with a 2-1 lead in the five-match series.
"Brilliant game of cricket," England captain Eoin Morgan said. "Our spin twins did a fantastic job. The pressure shifted a little bit with the Williamson-Santner partnership and it was a tight game that could have gone either way."
All of England's batsmen had got starts but only Morgan looked comfortable on the drop-in pitch that appeared to be two-paced and providing inconsistent bounce as he top-scored with 48 and shared a 71-run partnership with Stokes.
England's lower order, however, accelerated with Jos Buttler smashing 29 from 23 balls before he became leg-spinner Ish Sodhi's third wicket in the 43rd over and the bowlers then added another 50 runs in the final seven overs.
New Zealand had been comfortable at 80-1 in the 18th over with Colin Munro on 49 and Williamson on 28 before Stokes then produced his catch at cover to dismiss the opener off Rashid.
Moeen, who took wickets on successive deliveries, and Rashid then took three wickets for one run between them to leave New Zealand floundering at 98-5.
"We were in a position of strength at one stage but lost a lot of wickets that hurt us and we had to take the game even deeper," Williamson said. "Our plans kept changing as we lost wickets. They deserved to win, just a shame we got so close."