A superb unbeaten 97 from opener Sanju Samson guided India to a five-wicket win over West Indies on Sunday and they will now face England for a place in the final.
Samson's magnificent knock means the defending champions have reached the semi-finals for a third successive tournament after chasing down a target of 196 with four balls to spare.
India take on England in Mumbai on Thursday, a day after South Africa take on New Zealand in the first semi-final.
Put in to bat first at Eden Gardens, West Indies posted 195-4, as Rovman Powell and Jason Holder added 76 runs off the last 35 balls in their unbeaten partnership.
India made a shaky start with Abhishek Sharma and Ishan Kishan falling in the first five overs, but opener Samson hit four sixes and 12 fours to help India reach 199-5, pulling off the highest successful run chase in this T20 World Cup.
“I never felt that I would do something special like this but I was just focusing on my role,” Samson said after winning the player-of-the-patch award. “Just keeping one ball at a time and very grateful, I think this is one of the greatest days of my life.
“It means the whole world actually to me. I think right from the day I started playing, I started dreaming to play for the country. This is the day I was waiting for and very grateful and very thankful.
“I've always had a very special journey with lots of ups and downs. I've kept on doubting myself, kept on thinking what if? Can I make it? But I kept on believing and thanks to the Almighty for actually blessing me today, so I'm very happy.”
India captain Suryakumar Yadav added: “See, I always say good things happen to good people who wait.
“I said it just now as well when I met him. It's all his hard work – what he's been doing behind the doors when he was not playing. The way he batted completely took the side to victory.”
Put in to bat first, the West Indies openers cautiously scored 45 runs in the powerplay, after Abhishek Sharma dropped Roston Chase at cover. Shai Hope (32) failed to judge Varun Chakaravarthy's googly and got bowled in the ninth over.
Shimron Hetmyer, in at three, scored a quick 27 but Jasprit Bumrah (2-36) got him caught behind, before dismissing Chase (40) two balls later, with Suryakumar Yadav diving at a difficult angle to take an airborne catch.
When Sherfane Rutherford fell in the 15th over, West Indies were at 119-4, but Rovman Powell hit Arshdeep Singh for two sixes and a four to score 24 runs in the next over, regaining the momentum.
Powell (34) and Jason Holder (37) put up a rapid 76-run partnership for the fifth wicket to reach 195-4, far above the highest successful run chase in a T20 international at Eden Gardens, which India pulled off in 2022 when West Indies set a target of 158.
In reply, India lost opener Sharma early to Akeal Hosein, the spinner who had replaced West Indies opener Brandon King. Ishan Kishan fell to Holder nine balls later, leaving them at 41-2.
With the required run rate at double digits, Samson kept the runs flowing, hitting three sixes and four boundaries to complete his half-century in 28 balls.
India shrugged off the loss of captain Suryakumar (18), as Tilak Varma hit Shamar Joseph for three successive fours and belted Chase down long on to get them within 60 runs of victory with six overs left.
Varma (27) and Hardik Pandya (17) fell as the game neared a nervy finish, before Shivam Dube hit Joseph for two quick boundaries to leave India just seven runs to get in the last over to pull off the highest successful run chase in the tournament.
Samson hit Romario Shepherd for six over square leg and hit a four down mid-on to bring up the winning runs, getting the highest individual score by an Indian in a T20 World Cup chase, surpassing Virat Kohli's knocks of 82 against Australia and Pakistan.
“All his hard work, what he's been doing behind the doors when he hasn't been playing, he's got the fruits for it at the perfect stage,” added Suryakumar on Samson.
