England moved up to fourth and onto 10 points with a 31-run victory over India at Edgbaston on Sunday – a first loss of the competition for Virat Kohli's men.
Sri Lanka could match the hosts' tally by triumphing in their last two games against West Indies and India but would remain below them due to an inferior number of wins, which is the first tie-breaker used to separate teams.
South Africa, West Indies and Afghanistan had already been eliminated, with leaders Australia the only team assured of a semi-final berth.
England's win over India means that Sri Lanka are out of #CWC19 semi-final contention. pic.twitter.com/bAgy56hVvU
— Cricket World Cup (@cricketworldcup) June 30, 2019
England's defeat of India was also bad news for Pakistan, who slipped to fifth and only have Bangladesh still to play.
Sarfraz Ahmed's side have nine points and wrap up their campaign at Lord's on Friday.
Photo Getty Images. Caption: Sri Lanka's Kusal Perera