Sri Lanka’s hopes of reaching the World Cup semi-finals were dented as South Africa thrashed them by nine wickets at Chester-le-Street.
Victory would have taken Sri Lanka level on points with fourth-placed England, but they stay in seventh.
No player scored more than 30 as they were bowled out for a turgid 203 in the final over of their innings.
South Africa won with 76 balls to spare, with Faf du Plessis making 96 not out and Hashim Amla an unbeaten 80.
Sri Lanka remain two points behind England and it is likely they will have to win both of their remaining matches, including beating unbeaten India, and hope other results go in their favour if they are to overtake Eoin Morgan’s side.
The biggest threats to England’s top-four place are now likely to be Pakistan and Bangladesh, with the former playing Afghanistan on Saturday.
South Africa were already eliminated, and this was just their second victory in the competition.