World champions India outplayed Sri Lanka in all departments of the game on Thursday to advance to the final of the Champions Trophy against hosts England.
After restricting Sri Lanka to 181 for eight from their 50 overs under the floodlights on a gloomy Cardiff day, India eased to an eight-wicket victory with 15 overs to spare.
The final will be staged at Edgbaston in Birmingham this Sunday.
Shikhar Dhawan, the tournament's top scorer before Thursday's semi-final with 264 runs including two centuries, cut loose again when India set off in pursuit of their modest target.
Dhawan, who recorded the fastest test century by a debutant playing against Australia this year, passed 50 for the third time in the tournament off 73 balls with six fours and a six.
He survived three dropped catches to reach 68 when he was stumped by Kumar Sangakkara off leg-spinner Jeevan Mendis with victory already assured.
Virat Kohli (58 not out) then took charge, hitting a six to reach his half-century, as India romped to victory before a noisy crowd of predominantly Indian supporters.
Sri Lanka needed Lasith Malinga to produce something special if they were to have any hope of beating the form team of the tournament.
But the Indian batsmen know all about the Sri Lanka strike bowler, playing against him regularly in the Indian Premier League, and before Thursday his wickets against India had cost 40.88 runs each.
The two teams have played each other 45 times in the past five years and India, who beat Sri Lanka in the 2011 World Cup final in Mumbai, have now won seven of their last eight games against their Asian rivals.
Dhawan signalled his intentions by driving two fours off Malinga through the covers and upper-cutting him for six off the final ball of his third over.
But he should have been out twice on 18 caught off Nuwan Kulasekara. Sri Lankan captain Angelo Mathews dropped the left-hander diving to his right at first slip. Sangakkara, standing up to the stumps to the medium pacer, then missed a thin outside edge.
Kulasekara was the unlucky bowler again when substitute fielder Sachitra Senanayake dropped a head-high chance at point after Dharwan had scored 62.
MATHEWS TOP SCORER
Mathews top-scored for Sri Lanka with a battling 51 from 89 deliveries after his opposite number MS Dhoni had opted to field under heavy cloud cover with moisture in the air following a 30-minute rain delay.
Dhoni set attacking fields throughout and even relinquished his wicket-keeping kit after the 22nd over to bowl his medium-pacers. In 222 previous one-day internationals Dhoni had bowled only two overs.
Dinesh Karthik, also a specialist wicketkeeper, took over from Dhoni who won an lbw decision against Mahela Jayawardene with his second delivery.
However, umpire Aleem Dar was forced to reverse his verdict when Jayawardene asked for a review and the television replay showed the batsman had got an inside edge on to the pads. After bowling four overs for 17 runs, Dhoni resumed his wicketkeeping duties.
The India pace bowlers zipped the ball both ways off a full length and Kusal Perera (4) and Lahiru Thirimanne (7) quickly fell to smart catches at second slip by Suresh Raina.
Raina snaffled a third when Sangakkara (17) fended a nasty delivery low to his right and Sri Lanka were reduced to 41 for three after 18 overs. Only 26 runs were scored in the first 10-over powerplay with three maidens.
Sri Lanka were also denied the services of Tillakaratne Dilshan, who pulled a short-pitched delivery from Umesh Yadav for four and unfurled a glorious off-drive which sped to the boundary.
He then started to hobble after driving to leg, received treatment to the back of his right thigh and carried on batting in obvious discomfort for three further deliveries before retiring hurt on 12. Dilshan, still limping, returned at the fall of the seventh wicket to add six runs to his score without being dismissed.
Jayawardene and Mathews painstakingly set about restoring Sri Lanka's fortunes, with the latter striking Ishant Sharma over long-on for the only six of the innings.
But they were unable to break the shackles imposed by the Indian spinners Ravindra Jadeja and Ravichandran Ashwin, who provided admirable support for the pacemen.
After adding 78 from 113 deliveries with Mathews, Jayawardene was bowled by left-armer Jadeja for 38, swinging across the line.
Mathews survived a chance to Virat Kohli at long-on off Ashwin but was caught in the covers by Bhuvneshwar Kumar two balls later.