Indias opening batsman Rohit Sharma continued his incredible World Cup form with yet another century, his fifth of the tournament and third in succession.
The 32-year-old had been level with Sri Lankan legend Kumar Sangakkara, who reached three figures on four occasions back in 2015, heading into his final match of the group stage.
Victory over Sri Lanka, coupled with an Australian defeat against South Africa, will see India top the table and a superb bowling performance ensured Dimuth Karunaratnes side were reduced to 264/7 despite Angelo Matthews rolling back the years with a spirited century of his own.
In response, India quickly warmed to their task with Sharma and KL Rahul putting on 189 for the first wicket, the highest opening stand of the tournament so far.
Sharma eventually fell for 103 off 94 balls, including 14 fours and two sixes, before he failed to pick a slower ball from Kasun Rajitha and spooned a drive to mid-off.
The class right-hander now has another milestone well within his sights as he moved to within 26 runs of Sachin Tendulkars record 673-run total for a single World Cup which the Little Master amassed in 2003.
Rohits batted with a terrible ease, said former New Zealand star Jeremy Coney, commentating for the BBC.