Image courtesy of: ESPNcricinfo
Rohit Sharma became the first player to score five centuries in a World Cup as India crushed Sri Lanka by seven wickets at Headingley.
Since they beat Sri Lanka and Australia lost to South Africa, India will play New Zealand in the semi-finals, while Australia will take on England.
Opting to bat first, Sri Lanka lost captain Dimuth Karunaratne early on as he was caught behind off the bowling of Jasprit Bumrah for 10 runs.
Kusal Perera managed to score 18 runs before he suffered the same fate as Karunaratne.
Kusal Mendis only made three runs before he was stumped by MS Dhoni off the bowling of Ravindra Jadeja, while Avishka Fernando was caught behind off the bowling of Hardik Pandya for 20.
With Sri Lanka struggling at 55/4, Angelo Mathews and Lahiru Thirimanne came to the rescue with a 124-run partnership, during which both batsmen brought up their half-centuries, before Thirimanne was dismissed by Kuldeep Yadav for 53, which came off 68 balls and included four boundaries.
Mathews and Dhananjaya de Silva added 74 runs to the score, during which Mathews surpassed his hundred, before he was removed by Bumrah for 113, which came off 128 deliveries and included 10 boundaries and two sixes.
Image courtesy of: ESPNcricinfo
Thisara Perera fell shortly after, but with De Silva scoring 29 not out, Sri Lanka finished on 264/7.
Bumrah was the pick of the bowlers with three wickets, while Pandya, Jadeja, Kuldeep and Bhuvneshwar Kumar chipped in with one wicket apiece.
Chasing 265 to win, India got off to a superb start as Rohit and Lokesh Rahul amassed a 189-run partnership, during which Rohit registered his hundred and Rahul his fifty, before Rohit was dismissed by Kasun Rajitha for 103, which came off 94 balls and included 14 boundaries and two sixes.
Rahul and India captain Virat Kohli kept the runs flowing with a 55-run stand, during which Rahul brought up his century, before he was caught behind off the bowling of Lasith Malinga for a career-best 111, which came off 118 balls and included 11 boundaries and a six.
Image courtesy of: ESPNcricinfo
Even though Rishabh Pant was trapped lbw off the bowling of Isuru Udana, Kohli guided India across the finish line with his unbeaten 34.
Rajitha, Malinga and Udana claimed one wicket each.
Rohit was named Man of the Match.