Jofra Archer set the tone by removing Sri Lanka captain Dimuth Karunaratne in his first over on Friday, helping to set England a target of 233 to retake the lead in the World Cup standings.
Archer finished 3-52, his fifth three-wicket haul in six games, and pulled even with Australian paceman Mitchell Starc at the top of the tournament's bowling list with 15.
Fellow fast bowler Mark Wood took 3-40 to improve his tally to 12, and wrist-spinner Adil Rashid took two wickets with consecutive balls in a haul of 2-45.
Angelo Mathews scored a defiant, unbeaten 85 from 115 balls to guide Sri Lanka to 232-9 at the end of the innings.
The Sri Lankans had three 50-plus partnerships but didn't consolidate, and twice lost wickets in pairs.
It started badly for them after winning the toss and electing to bat, slumping to 3-2 in the third over after Archer had the captain caught behind and Chris Woakes dismissed Kusal Perera two balls later.
Adil Rashid celebrates with teammates after dismissing Kusal Mendis, kneeling, during the match in Leeds on Friday. AP
Avishka Fernando scored 49 from 39 balls and was within a shot of his half-century when he guided a ball from Wood to third man to end a 59-run third-wicket stand.
That brought Mathews to the crease and he shared a 71-run partnership with Kusal Mendis, who scored a patient 46 from 68 balls before Adil Rashid struck twice in two 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) nonchalantly drove the hat-trick ball for two runs and combined with Mathews in a 57-run stand before Archer struck with a slower ball and Joe Root took 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 tail-end wickets.
After 26 games at the World Cup, it's the first match at Headingley.
England took advantage of a pitch offering some turn and used three spin bowlers, with Rashid the most successful. All-rounder Moeen Ali marked his 100th one-day international with an economical 10-over spell costing 0-40.
England move back to the top of the standings with its fifth win, edging ahead of defending champion Australia on run-rate.
Sri Lanka needs a win to remain in serious contention after a win, two washed-out games and two losses.
Teams
England: Jonny Bairstow, James Vince, Joe Root, Eoin Morgan (capt), Ben Stokes, Jos Buttler (wkt), Moeen Ali, Chris Woakes, Adil Rashid, Jofra Archer, Mark Wood
Sri Lanka: Dimuth Karunaratne (capt), Kusal Perera (wkt), Avishka Fernando, Kusal Mendis, Angelo Mathews, Dhananjaya de Silva, Jeevan Mendis, Thisara Perera, Isuru Udana, Lasith Malinga, Nuwan Pradeep
Umpires: Paul Wilson (AUS), Marais Erasmus (RSA)
TV umpire: Bruce Oxenford (AUS)
Match referee: Richie Richardson (WIS)
Associated Press / Agence France-Presse