India 265 for 3 (Rahul 111, Rohit 103) beat Sri Lanka 264 for 7 (Mathews 113, Thirimanne 53, Bumrah 3-37) by seven wickets
Leeds: India kept up their hopes of finishing top of the World Cup group table with a seven-wicket win against Sri Lanka at Headingley, Leeds on Saturdasy.
If Australia lose to South Africa in the day-night fixture, India would move above them and play New Zealand in the semi-final at Old Trafford on Tuesday.
Rohit Sharma became the first man to score five centuries in a single World Cup as India chased down 265 with 6.3 overs to spare at Headingley.
Angelo Mathews made 113 as Sri Lanka recovered from 55-4 to post 264-7.
Australia need a formidable 326 to beat the South Africans at Old Trafford and if they lose they will play England in the second semi-final at Edgbaston on Thursday.
England had been expecting to face another meeting with India at Edgbaston in the last four, but may be happy to avoid Rohit for as long as possible in such spectacularly prolific form.
Playing his 16th World Cup match, Sharma reached three figures in 92 balls and equalled the record of six World Cup centuries overall held by legendary compatriot Sachin Tendulkar, who played 45 matches in the event.
With opening partner KL Rahul, who made 111, they eclipsed their own 180 made against Bangladesh earlier in the week for the highest opening stand in this year's tournament, recording a chanceless 189 in 30 overs.
The right-handed duo unveiled an array of authentic strokeplay, recording nine boundaries in the opening six overs. The only surprise was Sharma driving straight to mid-off in the 31st over, having completed his 27th ODI hundred in his 214th match.