Match scores (The Oval)
Sri Lanka win by 7 wickets
India inns: 321-6 (50/50 overs. Dhawan 125, Sharma 78, Dhoni 63, Jadhav 25*; Malinga 2-70)
Sri Lanka inns: 322-3 (48.4/50 overs. Mendis 89, Gunathilaka 76, Matthews 52 no; Kumar 1-54)
Match report
Danushka Gunathilaka was only called up as a late replacement but his superb knock helped Sri Lanka keep their Champions Trophy bid alive with a shock seven-wicket win over India.
Gunathilaka may not even have played had it not been for an injury to Chamara Kapugedera but the stand-in became the star, hitting 76 in 72 balls from the top of the order as Sri Lanka cruised past India's target of 321.
Kusal Mendis also made an excellent 89 and captain Angelo Mathews an unbeaten 52 as Sri Lanka hauled themselves back into contention for qualification to the semi-finals and in doing blew Group B wide open.
India were strong favourites to all-but secure their own progress with a victory here at the Oval but defeat leaves all four teams on two points with one match still to play.
Sri Lanka will face Pakistan on Monday, 24 hours after India go up against South Africa on Sunday.
Earlier, Shikhar Dhawan had scored 125 along with strong contributions from Rohit Sharma (78) and MS Dhoni (63) but few would have predicted Sri Lanka recording their second highest chase in one-day history.
They made a stuttering start when Niroshan Dickwella's leading edge popped up to Ravindra Jadeja at point and after a heavy defeat to South Africa last week, an Indian win looked certain.
Instead, Gunathilaka and Mendis put on a partnership of 159, riding their luck at times, but also with smart and subtle batting that confounded India's bowlers.
Gunathilaka steered Hardik Pandya for six to bring up his 50 from 47 balls and Mendis followed suit soon after by launching Ravindra Jadeja over the boundary.
In between, Yuvraj Singh had misjudged a high Mendis shot he should have caught and Gunathilaka was fortunate too when a scrambling Rohit let another spill through his fingers.
But just as Sri Lanka's hopes were rising their task became more difficult, two run-outs spelling the end for each of their established batsmen.
Gunathilaka called an ambitious second run, only to watch Dhoni divert Kedar Jadhav's pin-point throw on to the stumps and then bowler Bhuvneshwar Kumar reacted fast to crack the bails again, this time leaving Mendis sprawled with his face in the turf.
But if India hoped that would spark a change in momentum, they would soon be disappointed as Mathews, returning from a calf injury, and Kusal Perera continued to crank up the pressure.
Perera was forced to retire hurt in the 43rd over after pain in his hamstring but not before adding an unbeaten 47 to the total, with Sri Lanka now needing 51 off 42 balls.
Mathews was also taking treatment between overs but he and Asela Gunaratne (34 not out) showed no signs of weakness.
Gunaratne swept Jasprit Bumrah for six off one knee before Mathews drove down the ground to bring the score level and then nicked a single to seal a stunning win with eight balls to spare.