Dunith Wellalage and Avishka Fernando starred for Sri Lanka as they claimed a first ODI series win over India in 27 years following their 110-run triumph in Colombo.
Fernando struck 96 from 102 deliveries to see the hosts score 248-7, leaving their opponents with an uphill task in difficult conditions at the R. Premadasa Stadium.
And having struggled in the second Test with Sri Lanka's spin bowlers, India did so again as Wellalage posted figures of 5-27 to secure a landmark victory.
Sri Lanka's opening three batsmen took the fight to India early on, with Pathum Nissanka (45), Fernando and Kusal Mendis (59) leaving them 183-3 in the 37th over.
Riyan Parag took three wickets as the Lions gave their opponents a target of 249 to draw the series, a task they found difficult from the beginning.
Captain Rohit Sharma (35) and Shubman Gill (six) fell early, with the Men in Blue's batting line-up crumbling to 82-6 by the 12th over.
Washington Sundar's 30 from 25 deliveries offered hope of a comeback, but Wellalage confirmed the triumph in just 26.1 overs with the wicket of Kuldeep Yadav to end India's 13-game unbeaten ODI run.
"We are in a really good mood right now, especially our coach," said Sri Lanka captain Charith Asalanka.
"He made a few changes in the team, and the boys really enjoyed the team environment."
Data Debrief: Sri Lanka end India ODI hoodoo
Sri Lanka's last bilateral ODI series victory over India was in August 1997, with India unbeaten in the next 13 such series, with 11 wins and two drawn series.
The win marked the Lions' first limited-overs series under new captain Asalanka and interim head coach Sanath Jayasuriya after Chris Silverwood's departure.