Spinners Dunith Wellalage and Charith Asalanka bagged nine wickets between them as Sri Lanka bowled out India for 213 in a Super Four clash of the Asia Cup on Tuesday.
India skipper Rohit Sharma surpassed 10,000 ODI runs and scored 53 to hand his team a brisk start in Colombo but Wellalage hit back with his maiden five-wicket haul.
The 20-year-old returned figures of 5-40 including the key wickets of Rohit and Virat Kohli with strong support from off-spinner Charith Asalanka, who claimed four victims for 18 runs.
Both teams are fighting for a place in the final of the 50-over tournament, a tune-up for the upcoming ODI World Cup in India.
India headed into their third successive day of cricket after hammering arch-rivals Pakistan by 228 runs on Monday's reserve day due to rain.
Rohit and Shubman Gill started cautiously after electing to bat but got going soon after with a few boundaries.
Rohit entered an elite list of players with over 10,000 ODI runs after smashing a straight six off fast bowler Kasun Rajitha to get the Indian flags waving in the stands with his second successive fifty.
Wellalage struck with his first ball of the match when he bowled Gill for 19 and there was no looking back for the young spinner.
He made the home fans erupt with the wicket of Kohli who fell for three a day after an unbeaten 122 against Pakistan at the same venue.
Rohit was also bowled by Wellalage who snared his third in three overs.
Ishan Kishan, who made 33, and previous-match centurion KL Rahul attempted to rebuild the innings with a stand of 63.
Wellalage ended that partnership when he got Rahul caught and bowled for 39 and later sent back Hardik Pandya for his fifth.
Asalanka kept chipping away from the other end and was on a hat-trick with India on 186-9, but Axar Patel stuck around to take the total past 200 after a nearly 45-minute rain break.
Maheesh Theekshana dismissed Patel for 26 to end India's innings in 49.1 overs.