Needing to win the match to make it to the final, the Lankans thorougly outplayed the Indians after Mahendra Singh Dhoni [ Images ] won the toss -- the first time on this tour of the island nation -- and elected to bat on what turned out to be a two-paced track at the Rangiri Dambulla International stadium.
Replying to India's meagre total of 103 from 33.4 overs -- their third lowest against the Sri Lankans -- the hosts raced to victory, ending up with 104 from 15.1 overs, 209 balls to spare and a bonus point.
In terms of deliveries to spare, the victory was Sri Lanka's seventh-best, and India's heaviest defeat.
Wednesday's last league match between India and New Zealand [ Images ] now becomes a knock-out, the winner earning a final meeting with the hosts.
Sri Lanka completed their league engagements with 11 points. New Zealand have seven and India five.
Kumar Sangakkara [ Images ], who scored 13 from 15 balls, got the winning runs with his second four. Upul Tharanga was also unbeaten, on 12 from 19 deliveries.
Ishant Sharma [ Images ] checked the rampaging Sri Lankans in their stride somewhat, claiming the wickets of Tillakaratne Dilshan [ Images ] and Mahela Jayawardene [ Images ] immediately after the dinner break -- to which they went to at 63 without loss after just eight overs -- with successive deliveries, but the result was foregone.
Bowling his first over, he struck with his second delivery, in the ninth over of Sri Lanka's innings.
Dilshan, looking to loft the ball down the ground, did not get enough under it and Nehra, at mid-off, held on to the offering. Dilshan was out for 35 from 23 balls, inclusive of eight fours and Sri Lanka were one down for 79.
Jayawardene, who was surprisingly sent out to open, followed his partner the next delivery. He too looked to attack the bowler, but pulled a short one from Ishant straight to Ravindra Jadeja [ Images ] at mid-off and was out for 33 off 35 balls, which included six fours. Sri Lanka 79 for 2.
But Sangakkara and Tharanga made sure there were no more hiccups and finished off things quickly.
Credit for Sri Lanka's thumping victory should go to the 21-year-old Parera. He began India's demolition with the second delivery of his first over to compound the misery caused by Nuwan Kulasekara [ Images ], who had dismissed Indian openers Virender Sehwag [ Images ] and Dinesh Karthik [ Images ] early.
Replacing Kulasekara in the 18th over, the righ-medium-fast bowler induced an edge off Suresh Raina [ Images ] and keeper Kumar Sangakkara did well to take a low catch.
Raina was gone for 8 after facing 16 balls and hitting one four. The batsman hesitated before walking back, and though the snicko did not indicate the nick, India were reduced to 63 for 4 after 18 overs.
Perera then struck again with the last delivery of the 22nd over. This time you did not need the snicko or umpire to decide whether Dhoni was out or not.
The skipper came down the pitch, but got a fine edge as he chased an outgoing delivery from Perera. Sangakkara, standing way behind, did not let go the offering. Dhoni was out for 10 off 16 balls, inclusive of two fours. India 71 for 5 after 22 overs. Yuvraj Singh [ Images ] was unbeaten on 14, inclusive of three fours, off 42 balls.
Perera got his third wicket with the second delivery of the 26th over. This time he had Ravindra Jadeja caught by Chamara Silva at gully. The batsman was out for a nine-ball duck.
There was more to celebrate for the Lankans immediatley as Perera got new-man-in Praveen Kumar [ Images ] (0) out next ball. India 77 for 7 after 25.3 overs.
Lasith Malinga [ Images ], who replaced Mathews for his second spell in the 26th over, then held centrestage. He got his first wicket, claiming Ashish Nehra [ Images ] (2). Nehra gloved a bouncer and Sangakkara did the rest. India 80-8 after 26.2.
He struck again in his next over, his eighth, trapping Yuvraj leg before. The left-hander tried to hit over the square leg mid-wicket, missed and was hit on the back foot.The ball looked like missing off but umpire Rauf thought otherwise and Yuvraj was out after scoring 38 from 64 balls, which included five boundaries and a six. India 99-9.
Perera completed the rout, bowling Ishant Sharma for 3 off 24 balls. He finished with figures of 7.4-1-28-5, his maiden five-for.
Malinga and Kulasekara had earlier exploited the conditions to have India in deep trouble at 50 for 3 by the 13th over, Sehwag, Karthik, and Rohit Sharma [ Images ] back in the pavilion.
Sehwag, who was stranded on 99 in the last match after Suraj Randiv [ Images ] deliberately sent down a no-ball, was the first to go. The dashing opener, who was watchful at the start, was adjudged leg before wicket after scoring 12 (two fours) off 12 balls. The ball swung in, moved towards leg stump and rapped the batsman on his pads. India 20 for 1 after 5.2 overs.
Karthik was then unbeaten on 8 off 20 balls. But he survived only a couple of overs, Kumar Sangakkara taking a good catch behind off the fourth delivery of the eighth over. There was no sound and replays indicated that the ball made no contact with the bat. Karthik, who is struggling for form, was out for 9 off 25 balls. Kulasekara had figures of 4-1-13-2.
After 10 overs India were 38 for 2. Rohit Sharma was on 6 off 15 balls while Yuvraj Singh was 8 off 8 balls.
But Rohit, after a hesistant start, was trapped plumb in front of the wickets by Angelo Mathews [ Images ] in his second over, the 13th of the match. The batsman played over an inswinging delivery and was rapped in front of middle. The dismissal gave the bowler a wicket maiden. India 50-3 after 13. Rohit scored 11 off 21 balls, inclusive of two fours.
Malinga began proceedings, bowling a perfect line and length, and conceded just one run from the first over. It was Dinesh Karthik's 1000th run in ODIs.
Suraj Randiv returns to the side after his one-match suspension following the Virender Sehwag no-ball episode as does Thissara Perera.
After days of rain, the sun is shining brightly and fans can hope for a good game of cricket. Victory will ensure India a berth in the final, as in that scenario Sri Lanka will be left with six points and no match in hand to play, while India will have secured at least nine points with another game -- against New Zealand -- to be played.
New Zealand are sitting pretty with seven points from three matches. Thus, if India win today, they go through with New Zealand.