Alex Hales and Jos Buttler hammered brilliant unbeaten half-centuries as England crushed India by 10 wickets on Thursday to set up a Twenty20 World Cup final with Pakistan.
Chasing 169 for victory in the second semi-final in Adelaide, Hales smashed seven sixes in his 86 and Buttler, who made 80, hit three in a spellbinding batting performance to cruise into Sunday's final in Melbourne with four overs to spare.
It was a far cry from earlier in the tournament when England were shocked by Ireland.
"That feels a long time ago now," said Buttler.
"The character we've shown to get through the tournament since then, and put in our best performance today, has been amazing."
Hardik Pandya's 33-ball 63 guided India to 168-6, but the total proved inadequate for an inspired opening pair, as England chase their second T20 crown after their 2010 triumph.
England captain Buttler smashed Bhuvneshwar Kumar for three boundaries in the opening over of their chase and his side never looked back.
He kept up the batting onslaught and Hales soon joined the big-hitting party as England raced to 63-0 in six overs.
Hales reached his 50 off 28 balls and was severe on Axar Patel, who leaked 28 runs in his three overs as the match was torn away from India in a flurry of sixes and fours.
Hales raised the team's 100 with another six off Pandya and Buttler soon changed gears to catch up with his partner.
The skipper reached his fifty with a six and a four off Pandya to douse any hopes of India attempting to end their world title drought since their 2013 Champions Trophy triumph.
He fittingly hit the winning runs with a six off Mohammed Shami to set up a repeat of the 1992 50-over World Cup final between Pakistan and England, which Pakistan won.
"We came here excited, it was a really good feeling when we came in," said b=Buttler.
"We always want to start as fast as we can and aggressive. Adil Rashid was (batting) down at number 11 today, and that gives us the freedom to come out aggressive, that depth."
- 'Pretty disappointing' -
Earlier, Virat Kohli made his fourth half-century of the tournament and put on a 61-run fourth-wicket stand with Pandya, who tore into the opposition attack in the final overs, taking 57 off the final three overs, including 20 off one from Sam Curran.
But it proved too little, too late, after a sluggish start with the bat against some disciplined England bowling and then a ragged performance in the field.
"It's pretty disappointing how we turned up today," said captain Rohit Sharma.
"It was definitely not a wicket where a team can come and chase it down in 16 overs.
"The way we started with the ball was not ideal. We were a little nervy, but you have to give credit to the openers as well. They played really well.
"If we keep it tight and the batsman still score runs, we'll take it. But we didn't do that today."
Chris Jordan, in the side for the injured Mark Wood, picked up three wickets.
England invited India to bat and KL Rahul began with a cracking boundary off Ben Stokes.
Seamer Chris Woakes had Rahul caught behind off a rising delivery for five.
Skipper Rohit Sharma hit four boundaries after a scratchy start as he and Kohli attempted to rebuild but Jordan broke through in his first over and ended a 43-run partnership when Sharma mistimed to wide long-on with the score on 57.
Suryakumar Yadav smashed a six and four off Stokes but soon fell to Adil Rashid's leg-spin for 14.
Kohli passed 4,000 T20 international runs with a boundary off Liam Livingstone that took India's total to 100-3 after 15 overs.
Kohli, who leads the tournament batting chart with 296 runs, reached 50 off 39 balls but fell next delivery to a sharp catch at short third man by Rashid off Jordan.
Pandya smashed four fours and five sixes before treading on his stumps to be out hit wicket off Jordan's final ball of the innings.