Set a modest 201 to win after another disappointing batting effort by India, England stumbled early before recovering to edge their way to 201 for seven and win with 19 balls to spare.
With the winner of the game advancing to Sunday's final, England looked in deep trouble when they slumped to 66 for five in their run chase.
However, James Taylor and wicketkeeper-batsman Jos Buttler rescued their cause.
The pair rode their luck, with several close calls, to put on 125 for the sixth wicket and carry their side to within 10 runs of victory, before both fell in quick succession.
Taylor made 82 (122 balls) before holing out to deep fine leg from the bowling of Mohit Sharma in the dying stages of the chase.
Buttler made the most of an early reprieve, when he should have been run out.
He went on to make a match-winning 67 from 78 balls before falling just two runs after Taylor, caught on the boundary from the bowling of Mohammed Shami.
The loss meant India ended their three-month tour of Australia without a win from 10 games, including two warm-up matches, four Tests and four one-day internationals.
Having been sent in to bat, India squandered a good platform provided by their openers.
They lost six wickets for just 31 runs to slump to 165-9, before some late hitting from Mohammed Shami (25 from 18 balls) and Mohit Sharma boosted their total.
It was another worrying batting performance ahead of their upcoming World Cup title defence in Australia and New Zealand next month. India beat Sir Lanka in the 2011 final.
The Indians made an encouraging start to their innings through the previously out-of-form Shikhar Dhawan and opening partner Ajinkya Rahane.
The pair put on 83, but the innings started to unravel when Dhawan was caught behind by Buttler from the bowling of Chris Woakes for 38.
Virat Kohli's poor series then continued when he was caught by Joe Root from the bowling of spinner Moeen Ali (2-35) for just eight.
Kohli averaged 86.50 during the Test series against Australia, which India lost 2-0, but has been unable to continue that form into the limited overs format, making just 24 runs at 8.00.
From there wickets fell steadily, with only Rahane offering serious resistance with 73.
Steven Finn's good series continued when he claimed 3-36 for England, with every English bowler tasting success.
Like Sports on Facebook, follow @ETribuneSports on Twitter to stay informed and join in the conversation.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ