Set 165 to win, the host nation came up short in a fantastic match, played in front of a crowd of nearly 20,000 at Edgbaston.
A blistering 61 off 32 balls from India opener Smriti Mandhana – coupled with some fine spin bowling – ultimately proved the difference.
India, backed by a healthy support, will now play the winners of this evening’s second semi-final between Australia and New Zealand in Sunday’s gold medal match. England will face the loser in the bronze.
The home side, who hold the record for the highest successful chase in a women’s T20 international – recorded against India in Mumbai four years ago – were ahead of the run rate midway through their reply.
But excellent bowling in particular from Deepti Sharma, who conceded just 16 runs from her four overs, stalled their momentum.
Both Warwickshire’s Amy Jones and England skipper Nat Sciver were run out in quick succession after sharing a partnership of 54 for the fourth wicket as the chase faltered in the closing overs.
After winning the toss and choosing to bat, India’s innings was given terrific early impetus by Mandhana, who at one stage was threatening to break the record for the fastest ever half-century in women’s T20 cricket (18 balls), which she currently shares with New Zealand’s Sophie Devine.
No-one was spared punishment, Alice Capsey and Katherine Brunt both hit for two fours before Issy Wong was struck for six off the third ball of her first.
India were 64-0 at the end of the powerplay and England increasingly desperate to stem the flow of runs.
Freya Kemp made the initial breakthrough when Shafali Verma threw up a simple catch for Brunt at mid-on, before Sciver – as so often before – got the one they wanted as Mandhana, attempting a scoop, could only pick out Wong at short fine leg.
Only the tiniest of inside edges prevented Harmanpreet Kaur from departing for a duck off the bowling of Sophie Ecclestone, the original decision of out successfully overturned by the India batter on review.
Harmanpreet then began to find her rhythm, hitting two fours before smashing Kemp over long on for six. But the very next ball she picked out Maia Boucher at square leg, the latter taking a brilliant catch on the run, diving forward.
Still, at 106-3 India had a more then solid foundation and after Sharma scooped Ecclestone for successive fours, Kemp missed the chance to remove her when she let a catch off the bowling of Brunt slip through her hands.
Boundaries continued to flow, Jemimah Rodrigues smacking three in the 18th over off Sciver. Together, she and Sharma put on 53 before the latter skied a catch back to bowler Brunt with two balls of the innings remaining.
England were facing a big chase but began with purpose, Sophia Dunkley hitting two of the first three balls she faced for four as 15 runs came from the first over.
Dunkley then cracked successive boundaries at the start of the second but was then trapped leg before by Sharma, before she could do any more serious damage.
Danni Wyatt kept the runs flowing with three fours off Meghna Singh’s first over and by the end of the powerplay, England were 58-1.
Calamity quickly followed when Alice Capsey was run out following a mix-up and Wyatt, looking to restore some impetus, then scooped a Sneh Rana delivery onto her own stumps to leave the hosts 81-3 after nine.
Jones survived a leg before review off the bowling of Radha Yadav, before skipper Sciver brought the 100 up in the 13th over.
With six overs to go England were 113-3, exactly the same score as India at that stage. After just four runs came from the 15th over, Jones relieved some of the scoreboard with successive boundaries off Verma.
But Sharma piled it back on by conceding just three runs off her final over, to leave England needing 29 off the last three.
Jones was then run out attempting a single off Rana and when just two runs were scored in the over, the task looked a steep one.
Sciver did her best, lifting the third ball of the 19th over for six and then scrambling a leg bye four. But the next ball she was run out attempting a risky two and 14 off the last over always looked like being beyond England, Ecclestone hitting the last ball of the match for six with the game already gone.