Victory meant England were through to the last four of a tournament featuring the world’s top eight one-day international teams regardless of the outcome of their last group match against Australia on Saturday.

Mark Wood took the key wicket of Kane Williamson as England booked their place in the semi-finals of the Champions Trophy with an 87-run win over New Zealand at Cardiff on Tuesday. New Zealand, set 311 for victory, finished on 223 all out with 39 balls left. They were in the hunt while captain Williamson, fresh from a hundred in the Blackcaps’ opening rain-marred no result against Australia, was making 87. But fast bowler Wood made the key breakthrough to dismiss the star batsman.

Then, as happened after Williamson’s departure against Australia, the Blackcaps lost a cluster of wickets.

Wood’s fellow paceman Jake Ball was named man-of-the-match for a miserly return of two for 31 in eight overs up front.

Victory saw England into the last four of a tournament featuring the world’s top eight one-day international sides after an eight-wicket defeat of Bangladesh at the Oval last week, regardless of the result of their last Group A match against arch-rivals Australia at Edgbaston on Saturday.

Two years ago, New Zealand thrashed England by eight wickets on home soil at the 2015 World Cup in Wellington. But this decisive win was a measure of England’s progress in the 50-over format since that chastening defeat.

England were in danger of falling short of 300 after Joe Root (64), Alex Hales (56) and Ben Stokes (48) all got out when well set. But Jos Buttler’s dashing unbeaten 61 helped take them to 310 all out.

New Zealand lost their first wicket just four balls into their innings when Luke Ronchi was clean bowled for a golden duck by Ball.

Martin Guptill (27) and Williamson dug in before the former edged an intended drive off all-rounder Stokes to Root at a wide slip. Both Williamson, posting his fifth fifty in as many ODIs against England, and Taylor were hit on the helmet by fast bowler Liam Plunkett, who finished with four for 55. But Williamson still drove Wood back over his head for four at a Cardiff ground rivalling Wellington as a windswept venue. Taylor, without being at his fluent best, offered sound support in a stand of 95.

– Wood strike –

England captain Eoin Morgan, shuffling his pack, recalled Wood and the Durham quick duly delivered the wicket his side badly needed when a rising ball took Williamson’s glove and diving wicket-keeper Buttler clung on to the catch. It was the end of Williamson’s 98-ball innings featuring eight fours.

And when Taylor (39) holed out off Ball to midwicket, New Zealand were 168 for four in the 34th over.

Jimmy Neesham hit a six off Plunkett but fell next ball when he found Hales in the deep.

Leg-spinner Adil Rashid justified his selection in place of the injured Chris Woakes with two for 47 in 10 overs, with Plunkett ending the match when Tim Southee was caught at deep midwicket.

After just 30 minutes’ play, the match was halted at 11:00am local time (1000 GMT) as a national minute’s silence in memory of the victims of Saturday’s terror attack in London was observed.

Jason Roy hit Adam Milne for four to go to 13 but was then bowled round his legs by the pacemen. His exit meant the struggling Surrey opener had managed just 47 runs in his last seven innings at this level.

Root, fresh from his career-best 133 not out against Bangladesh, twice drove left-arm spinner Mitchell Santner for six. Hales slapped Milne high over long-off before he was bowled next ball by Milne. Root, deprived of the strike during a stand of 54 with Stokes, saw his innings end when he played on trying to carve Anderson, while Stokes uppercut Trent Boult straight to Milne at third man.

Buttler extravagantly ‘flicked’ Boult for six and flat-batted another off Milne. Plunkett joined in by pulling Milne for a six that brought up England’s 300.