Angelo Mathews hit a patient fifty before veteran pacer Lasith Malinga returned with a sensational four-wicket haul as Sri Lanka stunned hosts England by 20 runs in a low-scoring thriller to keep their World Cup semi-final hopes alive on Friday at Headingley.

Electing to bat, Sri Lanka managed a modest 232/9, riding on an unbeaten 115-ball 85 by Mathews. The 1996 champions then returned to dismiss England for 212 in 47 overs to register only their second win in this World Cup.

Malinga (4/43) emerged as the star for Sri Lanka as he dismissed the top three – James Vince (14), Jonny Bairstow (0) and Joe Root (57) and also accounted for Jos Buttler (10).

Off-spinner Dhananjaya de Silva (3/32) then moped up the tail with a quick three-wicket burst. After Root’s 89-ball fifty, Ben Stokes kept England in the hunt with a 89-ball 82 but he ran out of partners.

The win took Sri Lanka to fifth spot with six points from six matches, while England remained in third spot with eight points from six games.

Earlier, Mathews added 71 and 57 runs with Kusal Mendis (46) and Dhananjaya de Silva (29) for the fourth and sixth wickets, respectively, as Sri Lanka recovered from 3/2. Playing his first World Cup game, Avishka Fernando, too, contributed with a breezy 39-ball 49.

Chasing the total, England could not recover from the twin strike by Malinga and could score only 38/2 in the powerplay. Root and Eoin Morgan (21) added 47 runs for the third wicket before Isuru Udana (2/41) produced a stunning caught-and-bowled effort to remove the skipper as England slipped to 73/3 in 18.4 overs.

Root completed his fifty off 78 balls, and soon, new man Stokes brought up the team hundred with a boundary off Pradeep. Malinga then brought Sri Lanka back in the match when he had Root caught behind off a ball drifting down the leg side.

De Silva had Moeen Ali hole out to long-off, while Chris Woakes’ thin edge was caught by the keeper. Another edge sent Adil Rashid back to the hut as England slipped to 178/8.