JOS Buttler played a starring role as England edged out Sri Lanka to book a World Twenty20 semi-final with New Zealand.

The former King's College pupil struck eight fours and two sixes in a scintillating 66 not out from just 37 balls, as England posted 171 for four.

England's 171 for four was built around Jos Buttler's brilliant 66 not out and 42 from Jason Roy at the top of the order.

With Buttler to the fore, England clubbed 72 from the last five overs in what had looked a perfectly timed sprint.

Sri Lanka were a mess having loss four batsmen in just three overs.

David Willey removed old-stager Tillakaratne Dilshan with England's third delivery and also had Milinda Siriwardana caught at cover.

In between, Chris Jordan did for Dinesh Chandimal, who guided an edge into Buttler's gloves and Lahiru Thirimanne was run out at the non-striker's end, Stokes reacting instantly to pick up and part the stumps as the batsman returned.

But Mathews and Chamara Kapugedera halted the collapse, first batting cautiously then upping the risk factor as the required rate rose.

In the end their fifth-wicket stand was worth 80 in 10 transformative overs.

England did not turn to spin until the 10th over and Mathews sensed the chance to attack.

He launched Adil Rashid's third ball almost out of the ground and the Yorkshireman's second over contained three more sixes, two to Mathews and one for Kapugedera.

England's supposed dominance was being tested but Liam Plunkett made the breakthrough with the final ball of his quota.

Kapugedera (30) was looking for six more but only got half of it and Stokes held his nerve on the ropes.

Sri Lanka needed 72 from 47 balls and kept coming. Thisara Perera's second ball sailed over the ropes, then he and Mathews clobbered Moeen Ali for 21 in the 16th over.

Jordan turned in two brilliant death overs to keep England in the contest, conceding just 13 runs and dismissing Perera, Dasun Shanaka and Rangana Herath.

That left him with four for 28 and his final yorker to clean up Herath allowed England a feral moment of release.

There had been a similar reaction moments earlier when Joe Root pulled off a mesmerising catch at mid-off, saving a certain four in the process.

It was one of many moments that a breathtaking match pivoted on.

But waiting at the other end was Mathews, who had turned in a stunning knock and peppered the crowd with sixes.

Stokes accepted the challenge and, with his radar on point, gave up just a pair of twos in the last over to seal a 10-run victory.

From a seemingly dominant position, England had come within moments of an early exit.

Now they are just two wins from the trophy.

Much of the pre-match talk had been about England's frailty against spin, and Sri Lanka duly tossed the second over to their danger man Herath.

He responded with a wicket-maiden, giving a fit-again Alex Hales the jitters with a beauty first-up then picking him off lbw on the sweep.

Jeffrey Vandersay turned in a neat over at the other end and suddenly England were treading water at eight for one.

But Root and Roy were composed, taking 11 off Herath's next visit and reaching a respectable 38 for one by the end of the powerplay.

Root (25) eventually lost patience and turned a long hop into a wicket, leaving Buttler 9.5 overs to bat and he was soon driving and ramping his way into touch.

He put on 23 with Roy before Vandersay had the opener lbw deep in the crease on the pull.

Eoin Morgan joined Buttler and the pair swung things in England's favour, punishing some soft medium-pace offerings at the death.

Perera's first over disappeared for 18, six coming with a Morgan flourish over long-off.

But this was Buttler's stage as he sprayed three fours in four Dushmantha Chameera deliveries and brought up a 28-ball half-century with a towering straight six off Shanaka.

Sri Lanka's discipline was gone and Buttler did not relent, swatting Chameera for six more with a blow measured at 97 metres to bring up 150.

Morgan was run out for 22 in the final over but new man Stokes crashed the final ball of the innings for six.