Rohit Sharma scored a record fifth hundred in a single World Cup as India thumped Sri Lanka by seven wickets in their final group game at Headingley to finish top of the table and avoid a semi-final with England.
Rohit (103 off 94 balls) followed his tons against South Africa, Pakistan, England and Bangladesh as he eclipsed Sri Lanka great Kumar Sangakkara's tally of four hundreds in the 2015 World Cup in Australia and New Zealand.
The 32-year-old, who also overtook Bangladesh's Shakib Al Hasan as the leading run-scorer in this year's competition, shared a stand of 189 with opening partner KL Rahul (111) as India coasted home with 6.3 overs to spare - Virat Kohli (34no) and Hardik Pandya (7no) steering their team over the line after Rishabh Pant (4) was pinned lbw on review.
Kohli's side had earlier reduced Sri Lanka to 55-4 after losing the toss, but Angelo Mathews (113), Lahiru Thirimanne (53) and Dhananjaya de Silva (29no) rallied to lift their team up to 264-7 - Mathews hitting his third ODI hundred, all of which have come against India.
However, their efforts proved in vain as Rohit racked up his third century in a row and the 27th of his ODI career, placing him joint-fifth on the all-time list alongside South Africa's Hashim Amla - only Sachin Tendulkar (49), Kohli (41), Ricky Ponting (30) and Sanath Jayasuriya (28) have more ODI tons.
India's thumping win, coupled with Australia's defeat to South Africa, means they finished top of the World Cup table and will now play New Zealand in Tuesday's opening semi-final at Old Trafford.
India made a tremendous start against Sri Lanka across the Pennines in Leeds, picking up four wickets inside the first 12 overs, with MS Dhoni involved in each of the dismissals, claiming three catches and a stumping.
The veteran wicketkeeper pouched Dimuth Karunaratne (10) and Kusal Perera (17) after Jasprit Bumrah found the openers' edges and stumped Kusal Mendis (3) after he advanced down the pitch to spinner Ravindra Jadeja (1-40), who was playing his first game of the tournament.
Dhoni then caught Avishka Fernando (20) low down as the batsman attempted to ramp a slower-ball bouncer from Pandya - Fernando, who hit a maiden century against West Indies on Monday, having successfully overturned an lbw dismissal against Bumrah on nought.
Mathews led a fightback, though, reaching his ton from 115 deliveries after being dropped on 63 by Bhuvneshwar Kumar and sharing stands of 124 and 74 with Thirimanne and De Silva respectively - Thirimanne hitting his 21st ODI fifty before slicing Kuldeep Yadav to point.
Mathews - whose unbeaten 85 helped Sri Lanka to victory over England at Headingley on June 21 - was eventually caught off Bumrah, who finished with superb figures of 3-37, while his new-ball partner Bhuvneshwar took 1-73 - the wicket of Thisara Perera for two Kumar's only moment of joy.
Sri Lanka's bowlers encountered just three moments of joy, finally removing the India openers after they had broken the back of the run chase with a partnership lasting 30.1 overs, and then adding the scalp of Pant late on.
Rohit cemented his milestone hundred from 92 deliveries by pulling Kasun Rajitha for a boundary, one of 16 he managed before he ballooned a Rajitha slower ball to Mathews at mid-off to be first man out.
Rahul, meanwhile, completed his second ODI hundred from 109 deliveries before he gloved Lasith Malinga behind in the seamer's final World Cup game - the wicket Malinga's 56th in all World Cups, moving him outright third, ahead of Wasim Akram (55) and behind only Glenn McGrath (71) and fellow Sri Lankan Muttiah Muralitharan (68).
Rohit's next target will be to score the most runs in a single World Cup, with the in-form batsman needing 27 to topple countryman Tendulkar, who managed 673 in Africa in 2003.
Watch the Cricket World Cup semi-finals live on Sky Sports Cricket World Cup (channel 404). India play New Zealand from 9.30am on Tuesday, before Australia meet England from 9.30am on Thursday.