Cardiff: A brilliant all-round performance from India helped them thrash Sri Lanka by eight wickets in the second Champions Trophy semifinal in Cardiff on Thursday and march into the finals.
India takes host England in Final on Sunday June 23 at Birmingham.
Ishant Sharma and Ravichandran Ashwin picked up 3 wickets each while Shikhar Dhawan and Virat Kohli (58*) notched up fine fifties.
Dhawan made 68 came before getting stumped out by Mendis in the 32nd over.
Dhawan pulled away Kulasekara towards square leg for a four to complete his half-ton in the 26th over. His fifty came 73 balls and was studded with four boundaries and a six.
Skipper Angelo Mathews gave Sri Lanka first breakthrough by bowling out Rohit Sharma after 77-run opening stand with Dhawan.
Sharma made 33 off 50 balls with the help of four boundaries before falling to Mathews in the 17th over.
Earlier, Ishant Sharma took three wickets as India restricted Sri Lanka to 181 for eight.
In a repeat of the 2011 World Cup final India won by six wickets in Mumbai, India captain MS Dhoni saw his decision to field first in helpful overcast and humid conditions well supported by his attack.
Sharma took three wickets for 33 runs as India made a strong start to their bid to face hosts England, seven-wicket winners over South Africa at The Oval on Wednesday, in Sunday's final at Edgbaston.
Sri Lanka captain Angelo Mathews battled hard for his top score of 51 in an innings where no other batsman made more than Mahela Jayawardene's 38.
But the fact Mathews took 89 balls for his runs, including just one six and one four, was testament to the grip India's bowlers exerted.
Sri Lanka were six for one when Kusal Perera edged a drive off Bhuvneshwar Kumar and was caught at second slip by Suresh Raina.
They suffered a further setback when Tillakaratne Dilshan, after playing an on-drive, pulled up with what appeared to be a right calf injury.
He received lengthy on-field treatment but, still struggling, he retired hurt an over later on 12.
Dilshan eventually finished on 18 not out after coming back in when his side were 164 for seven.
Kumar and Umesh Yadav produced a series of full length deliveries moving sharply off the pitch that beat both Kumar Sangakkara and fellow left-hander Lahiru Thirimanne.
Sri Lanka declined to 41 for three after both Thirimanne and Sangakkara fell to well-taken second slip catches by Raina off Ishant Sharma.
It was deserved reward for Dhoni's policy of attacking the batsmen with two slips and only two men outside the circle, with India's bowlers at least making a mockery of the suggestion the side would struggle in classic 'English' conditions.
The 23rd over saw Dhoni pass on his wicketkeeping role to Dinesh Karthik, himself a specialist gloveman but played as a batsman this tournament.
In his 222 previous ODIs Dhoni had bowled just two overs, yet his decision very nearly proved a master-stroke with his second ball Thursday.
Jayawardene, on five, was given out leg before by Pakistani umpire Aleem Dar only for the batsman -- who two years ago became the only man to score a hundred in a losing cause in a World Cup final -- to overturn it on review.
But a partnership of 78 ended when Jayawardene, swiping across the line, was bowled by Jadeja.
Off-spinner Ravichandran Ashwin chipped in with three for 48, including a stumping by Dhoni to dismiss Jeevan Mendis.
Earlier, India are unchanged, two changes to the Sri Lanka team: the Mathews' deputy Dinesh Chandimal is left out, Jeevan Mendis comes in, Thisara Perera takes the place of Shaminda Eranga.
Earlier, toss delayed by a wet outfield. There's been a lot of rain in Cardiff this morning, but it's stopped for now.
There is no reserve day in the schedule, for any of the game in this tournament including the semis and the final. If this game is washed out, India will go through to the final, since they topped their group.
India: Shikhar Dhawan, Rohit Sharma, Virat Kohli, Dinesh Karthik, Suresh Raina, MS Dhoni (Captain & wk), Ravindra Jadeja, Ravichandran Ashwin, Bhuvneshwar Kumar, Ishant Sharma, Umesh Yadav
Sri Lanka: Tillakaratne Dilshan, Kushal Janith Perera, Kumar Sangakkara (wk), Mahela Jayawardene, Jeevan Mendis, Lahiru Thirimanne, Angelo Mathews (Capt.), Nuwan Kulasekara, Rangana Herath, Thisara Perera, Lasith Malinga
Sri Lanka 181 for 8 (Mathews 51, I Sharma 3-33, Ashwin 3-48)
India 182 for 2 (Dhawan 68, Kohli 58*)
Result India won by 8 wickets
MOM: Ishant Sharma (India)