Jofra Archer moved into a share of the top spot on the World Cup wicket-taking list with 3-52 as England restricted Sri Lanka to 232-9 in the group game at Headingley.
Archer's fifth three-wicket haul in six games allowed him to join Australian paceman Mitchell Starc with 15 wickets so far in the tournament.
Fellow fast bowler Mark Wood took 3-40 to move to improve his tournament tally to 12 wickets and wrist-spinner Adil Rashid took two wickets in two balls in a haul of 2-45.
Angelo Mathews held the Sri Lanka innings together with a defiant, unbeaten 85 from 115 balls.
The Sri Lankans started badly after winning the toss and electing to bat, slumping to 3-2 in the third over after Archer had the captain Dimuth Karunaratne caught behind in his first over and Chris Woakes dismissed Kusal Perera two balls later.
Wood ended Sri Lanka's 59-run third-wicket partnership when he dismissed Avishka Fernando, who scored 49 from 39 balls.
That brought Mathews to the crease, and he shared a 71-run stand with Kusal Mendis, who scored a patient 46 from 68 balls before Rashid chimed in with the wickets of two Mendis on consecutive deliveries.
He had Kusal Mendis caught at mid-wicket by Eoin Morgan and then took a return catch for a soft-dismissal against Jeevan Mendis as Sri Lanka slipped to 133-5.
Dhananjaya de Silva (29) drove the hat-trick ball for two runs and combined with Mathews in a 57-run stand before Archer struck with a slower ball, with Joe Root taking a diving catch at mid-on in the 44th over.
Archer had Thisara Perera (2) caught at third man in his next over and Wood picked up two more tail-end wickets....