Jos Buttler smashed 66 in a 37-ball knock as England made a commanding 171 for four that ultimately proved too much for Sri Lanka despite a brave, undefeated innings of 73 by injured skipper Angelo Mathews.
England are now likely to face New Zealand in a semi-final encounter in New Delhi after the Black Caps cruised to 75-run win over Bangladesh in Kolkata to maintain their perfect record.
Buttler, who hit eight fours and two sixes, shared in a fourth-wicket partnership of 74 with skipper Eoin Morgan (22) as Sri Lanka’s bowlers struggled to contain a late England onslaught at the Feroz Shah Kotla stadium.
But after having Sri Lanka on the ropes at 15 for four, they were then made to sweat with Mathews hammering England’s spin bowlers to all corners despite struggling with a leg injury.
Mathews hit five sixes and three boundaries in a 54-ball innings.
He received crucial support from Chamara Kapugedera who hit 30 while Thisara Perera (20) and Dasun Shanaka who struck 15 off nine balls to take the contest down to the wire.
Moeen Ali and Adil Rashid were on the receiving off some fierce hitting from the Sri Lankans, with both men conceding 21 in a single over.
But Joe Root’s stunning catch at mid-off to dismiss Shanaka off the bowling of Chris Jordan in the 19th over proved crucial as Mathews then began running out of partners.
With Sri Lanka needing 15 from the last six balls, allrounder Ben Stokes conceded just four runs to clinch victory.
“It turned out to be a fantastic game,” said Buttler after being named man of the match, praising Stokes for bowling “that fantastic over at the death.”
England’s innings got off to a poor start when Alex Hales, back in the team after a back injury, was given out lbw off the bowling of the veteran Rangana Herath with only four on the board.
Rookie spinner Jeffrey Vandersay was the pick of the Sri Lankan bowlers, taking two for 26 in an economical four-over spell in which he took the wickets of both Jason Roy and Root.
But powerful hitting from Roy, who made 42 off 39, and Root (25) began to turn the match in England’s favour before Buttler then stepped on the accelerator.
– Clinical Black Caps –
Provided the West Indies — who are also in the semis — do not lose to Afghanistan in their final group match, England next face a New Zealand team who surged through the group stages with four wins out of four.
Their latest victory was the most clinical yet as they bowled out Bangladesh for just 70, their lowest total in T20 cricket.
Allrounder Grant Elliott took three wickets for 12 runs in his four overs while Ish Sodhi chipped in with three for 21.
New Zealand had earlier made 145 for eight at Eden Gardens with Mustafizur Rahman taking five for 22.
Skipper Kane Williamson top-scored with 42, an innings whose value was underlined when the New Zealand bowlers wreaked havoc.
“We certainly know that every game’s tough and the fickle nature of T20 cricket — sometimes it’s hard to work out,” said Williamson.
“But we’re going to look to keep improving as a team and see how far we can get.”
The remaining semi-final berth will be decided on Sunday night when the hosts take on Australia in Mohali.
The final is to take place in Kolkata on Sunday, April 3.