An astonishing spell of bowling from Bhuvneshwar Kumar inspired India to an 81-run win over Sri Lanka under the Duckworth/Lewis method in Port of Spain as both sides qualified for the tri-nations series final.
Bhuvneshwar took 4-8 from his six overs as Sri Lanka were blown away for 96 after being given a victory target of 178 from 26, with India having earlier made 119 for three in 29 before persistent rain in the Trinidad & Tobago capital forced a revised total.
Virat Kohli's men needed to restrict their opponents to under 167 to qualify for Thursday's showpiece ahead of hosts West Indies and did so with aplomb to finish top of the group and set up another encounter with Sri Lanka.
Sri Lanka captain Angelo Mathews opted to field first and it was he who made the initial breakthrough when Shikhar Dhawan could only guide an off-cutter to slip, giving Mahela Jayawardene his 200th one-day international catch.
The influential Virat Kohli contributed an uncharacteristically languid 31 off 52 balls before he was trapped plumb in front by slow left-armer Rangana Herath, who then found enough turn to bowl Dinesh Karthik.
Rohit Sharma was a calming figure for India and had made 48 off 83 balls, with two fours and a six, when the heavens opened.
After a significant delay, Sri Lanka's hopes of victory were dealt a blow when Bhuvneshwar dismissed Upul Tharanga and the dangerous Kumar Sangakkara in successive deliveries.
Bhuvneshwar then also accounted for Mahela Jayawardene and Lahiru Thirimanne to leave Sri Lanka reeling on 31 for four, and any hopes they had of pushing India close were all but over when slow left-armer Ravindra Jadeja sent Mathews and Dinesh Chandimal packing, the latter having made a respectable 26.
Ishant Sharma picked up two scalps as Sri Lanka were all out for 96 with eight balls of their innings still remaining.