England are set to face Australia in the semi-finals of the World Cup on Thursday after the Aussies were edged out by South Africa by 10 runs.
Meanwhile group winners India will play New Zealand at Old Trafford on Tuesday.
Chasing 326 for victory, Australia were 95-3, but David Warner’s century gave them a hope of a win.
Wicketkeeper Alex Carey hit out in the final 10 overs scoring 85 but, with 51 needed from 28 balls, he holed out, and Australia could not regain the momentum.
And in the other match, India eased past Sri Lanka despite a century from Angelo Matthews.
Sri Lanka batting first made 264/7 with Jasprit Bumrah being clinical bowling 10 overs, 3 wickets for 37 runs.
In reply Rohit Sharma and Lokesh Rahul made a 189 run 1st wicket partnership before Rohit fell for 103.
Rahul also pressed on to make 111, before Kohli and Hardik Pandya carried the side home with 7 overs to spare and 7 wickets in hand.