A gritty century by Angelo Mathews lifted Sri Lanka to 264-7 against India after a top-order collapse on Saturday, the final day of the World Cup group stage.
Former Lankan skipper made 113 and put on 124 runs for the fifth wicket with Lahiru Thirimanne to give Sri Lanka a respectable total after they were reeling on 55 for four at Headingley.
Fast bowler Jasprit Bumrah removed openers Dimuth Karunaratne (10) and Kusal Perera (18) inside eight overs after Sri Lanka, who are playing for pride after missing out on the semi-finals, won the toss and elected to bat.
Bumrah returned impressive figures of 3-37 in his 10 overs as India, who are already qualified for the semi-finals, restricted Sri Lanka with some quality bowling.
Kusal Mendis was stumped off left-arm spinner Ravindra Jadeja, who is playing his first match of the competition, before paceman Hardik Pandya had rising star Avishka Fernando caught behind for 20.
The right and left-handed batting combination of Mathews and Thirimanne rotated the strike and got the occasional boundary to keep the score ticking.
Thirimanne registered his 21st ODI fifty but soon fell to Yadav's left-arm wrist spin on 53 after giving away a catch to point.
Mathews, who was dropped on 61 by Bhuvneshwar Kumar at long-on off Jadeja, went on to complete his tone − his third in ODIs − with a boundary off Pandya.
The former Sri Lanka captain finally fell to Bumrah after smashing 10 fours and two sixes during his 128-ball knock.
Dhananjaya de Silva chipped in with his unbeaten 29 after his 74-run partnership with Mathews that took Sri Lanka past the 250-run mark.
Virat Kohli's India need 265 for a victory, which would give them a chance of finishing above defending champions Australia, who face South Africa in the day's other match.
Agence France-Presse