Hardik Pandya smashed 63 off 33 balls to power India to a competitive 168-6 against England in the second Twenty20 World Cup semi-final in Adelaide on Thursday.
Virat Kohli made 50, his fourth half-century of the tournament, and put on key partnerships including a 61-run fourth-wicket stand with Pandya, who tore into the opposition attack in the final overs.
England bowlers were disciplined with Chris Jordan picking three wickets but Pandya broke loose with a flurry of boundaries and smashed left-arm quick Sam Curran for 20 runs in the 19th over.
The winner will meet Pakistan, who beat New Zealand in the first semi-final, at the Melbourne Cricket Ground in Sunday's final.
England, who had two forced changes after Dawid Malan and Mark Wood missed out due to injuries, 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, in the side for Wood, broke through in his first over.
Jordan ended a 43-run partnership when Sharma mistimed to wide long-on with the score on 57 and India reached the halfway point at 62-2 off 10 overs.
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.
India, who topped Group 2 with four wins in five matches, are searching for their first global title since the 2013 Champion Trophy triumph. They won the inaugural T20 World Cup in 2007.