A four wicket spell from Bhuvneshwar Kumar helped India beat Sri Lanka by 81 runs under the Duckworth/Lewis method on Tuesday to set up a re-match in the final of the Tri-Nations competition in Port of Spain.
The result means host nation, West Indies, were eliminated from the competition while India, who picked up a bonus point, finished top of the group.
Heavy rain cut short India's innings at the Queen's Park Oval after 29 overs with Rohit Sharma unbeaten on 48 as they made 119 for three with Virat Kohli's 31 a valuable knock against an aggressive Sri Lanka attack.
The grassy track helped seamers Angelo Matthews and Shaminda Eranga keep India's run rate to just 4.10 runs an over but the rain, with a four-hour delay, removed any chance of India building on that diligent start.
That meant a target of 178 in 26 overs for Sri Lanka but while that appeared, on paper, a reachable goal, the tough batting conditions and fine Indian bowling made it a task beyond them.
Kumar, getting bounce and movement, removed four of the top five Sri Lankan batsmen for just 31 runs, a deadly spell which effectively ended the run chase inside nine overs.
Only Dinesh Chandimal with 26 from 58 balls, provided any real resistance, Ishant Sharma and spinner Ravindra Jadeja chipping in with two wickets each as Sri Lanka were bowled out for 96.
The two teams will face off for the title on Thursday, at the same venue.
India beat Sri Lanka by 81 runs (D/L method) in a rain-affected league match of the Tri-series at Queen's Park Oval in Trinidad to book their place in Thursday's final against the same opposition.
India needed to win by more than 10 runs to deny hosts West Indies a place in the final which they did it in style.
Sri Lanka struggled in tough conditions to be bowled out for 96 in 24.4 overs with Bhuvneshwar Kumar taking a career-best ODI figures of 4 for 8.
Chasing a revised D/L target of 178 in 26 overs after India's innings ended prematurely at 119-3 in 29 overs following a rain interruption, Sri Lanka were never in the hunt.
They were always behind the asking rate as Kumar bowled a sensational spell claiming four wickets for eight runs in six overs.
Chandimal top scored with 26 off 54 balls but they lost wickets at regular intervals being pegged back by the spin duo of Jadeja and Ashwin who snared two wickets apiece.
Earlier, Rohit was unbeaten on 48 as India put into recovered to make 119 for three despite losing Dhawan cheaply.
Kohli made 32 off 52 balls with four boundaries while Karthik made 12.
Dilhara is caught behind off Sharma. SL 87-9.
L Dilhara c Karthik b I Sharma 6 (22b 0x4 0x6)
Ashwin strikes castling Mendis. SL 78-7.
J Mendis b Ashwin 13 (16b 1x4 0x6)
Mendis hits a boundary driving Yadav straight down the ground.
Jadeja strikes again as Chandimal steps out only to be beaten and stumped by Karthik. Indi 63-6.
D Chandimal st Karthik b Jadeja 26 (54b 1x4 1x6)
Jadeja strikes as Mathews is beaten by the spin and bounce to be caught behind by Karthik who takes it after a juggle. SL 56-5.
A Mathews c Karthik b Jadeja 10 (11b 2x4 0x6)
Chandimal dances down the track and hoists Ashwin over cover for the first six of the innings. SL 55-4 in 13 overs.
Mathews becomes 15th Sri Lankan to pass 2,000 ODI runs.
Jadeja into the attack now as spin introduced for the first time.
Kumar completes his excellent spell with figures of 6-1-8-4.
Mathews breaks the shackles by deliberately edging Ishant past the vacant slip for a boundary to third man and slamming him over extra cover for consecutive boundaries.
Kumar has excellent figures of 5-0-7-4 as Sri Lanka are reeling at 31-4 in 9 overs.
Sri Lanka's captain Mathews and vice-captain Chandimal are in the middle.
Kumar is almost unplayable and claims his fourth wicket with Thirimanne chips straight to Kohli at cover. Ind 31-4.
L Thirimanne c Kohli b Kumar 0 (3b 0x4 0x6)
Kumar claims his third wicket as Mahela cuts him straight to Vijay at third man. SL 27-3.
M Jayawardene c Vijay b Kumar 11 (11b 1x4 0x6)
Sri Lanka are struggling to cope with the seam movement generated by Kumar and are also hampered by the slow outfield caused by rain.
Chandimal survives the hat-trick ball from Kumar.
Double blow for Sri Lanka as Sangakkara is trapped leg before by Kumar for a first-ball duck. SL 14-2.
K Sangakkara lbw b Kumar 0 (1b 0x4 0x6)
Kumar strikes in his second over as Tharanga steers him straight to Raina at slip. SL 14-1.
U Tharanga c Raina b Kumar 6 (11b 1x4 0x6)
Tharanga shows his intent by cracking Yadav over extra cover while Mahela also gets into his stride cutting him to the third man fence. SL 14-0 in 2 overs.
India have to restrict Sri Lanka to 167 for them to qualify.
Sri Lanka have been set a revised D/L target of 179 in 26 overs after the latest inspection with the match scheduled to restart at 4.15pm local time weather keeping fine.
Rain has halted play with India 119 for three in 29 overs with Sharma unbeaten on 48 and Raina with him on four.
Herath strikes a major blow bowling Karthik with a delivery which beat the outside edge and disturbs his off stump. Ind 111-3.
D Karthik b Herath 12 (18b 0x4 1x6)
Rohit turns it on slamming Herath for a huge six over midwicket. Ind 100-2 in 25 overs.
Rohit gets cracking pulling Dilhara over mid-on to the boundary. Ind 92-2 in 24 overs.
Karthik shows his aggressive intent by smashing the second delivery he faced from Herath over midwicket for the first six of the match. Ind 82-2 in 21 overs.
Herath strikes to trap Kohli leg before with a delivery that kept low to end a battling 49-run second wicket stand. Ind 76-2.
V Kohli lbw b Herath 31 (52b 4x4 0x6)
Mathews returns to bowl another tight over conceding just two runs. Ind 74-1 in 20 overs.
Kohli gets another boundary cracking Eranga through point. Ind 63-1 in 17 overs.
Kohli edges Eranga through slips for a boundary despite a desperate dive from Herath. Ind 51-1 in 15 overs.
Kohli breaks the shackles by cracking Malinga through point for a boundary. Ind 44-1 in 14 overs.
Malinga bowls a maiden over to Kohli who plays him watchfully. Ind 38-1 in 12 overs.
Jeevan Mendis at point drops a regulation catch as Sharma cuts Malinga in his first over.
Kohli opens his account by pushing Dilhara through midwicket for a boundary. Ind 32-1 in 8 overs.
Mathews strikes with his second delivery hanging his bat out and edging to Mahela in the slips for his 200th catch. Ind 27-1.
S Dhawan c Jayawardene b Mathews 15 (16b 2x4 0x6)
Dhawan cracks Dilhara over the slip cordon for a boundary to third man. Ind 27-0 in 6 overs.
Sharma smashes a free hit off Dilhara to the cover boundary.
Dhawan hits the first boundary of the match slamming Eranga back past the bowler.
Eranga and Lokuhettige are beating the outside edge of Rohit finding early swing and movement from the surface.
Rohit and Dhawan walk out to open the innings while Eranga has been handed the new ball.
Sri Lanka have made two changes with Dilhara Lokuhettige replaces the injured Nuwan Kulasekara while Rangana Herath comes in for Senanayake.
Lokuhettige last played an interational in 2005.
India field the same team which beat West Indies in their last outing with stand-in captain Kohli revealing that Dhoni might return to the side if India reach the final.
India - S Dhawan, R Sharma, M Vijay, V Kohli, D Karthik, S Raina, R Jadeja, R Ashwin, B Kumar, I Sharma, U Yadav
Sri Lanka - M Jayawardene, U Tharanga, K Sangakkara, D Chandimal, A Mathews, L Thirimanne, J Mendis, R Herath, L Malinga, S Eranga, L Dilhara
Sri Lanka won the toss and put India into bat.
India take on table toppers Sri Lanka in a must-win final league match of the Tri-series at Queens Park Oval in Trinidad if they are to deny hosts West Indies a place in the final.