James Taylor revived England's wobbly chase to lead them to a three-wicket victory over India which secured a place in the tri-series final against Australia.
Taylor (82) added 125 runs with Josh Buttler (67) for the sixth wicket to help England overcome a top-order collapse and chase down a 201-run victory target with 19 balls to spare.
It was, however, their disciplined bowlers who had laid the victory platform, shooting out India for 200 in 48.1 overs in what was effectively a semi-final at the WACA.
The pitch was not easy to bat on, as was evident in the 43rd over when James Anderson hit Mahendra Singh Dhoni flush on the helmet and, five balls later, struck the India captain below the knee-roll almost from same area to trap him lbw.
Barely two weeks before they start their World Cup defence, India would still be worried as only Ajinkya Rahane (73) shone with the bat in yet another capitulation.
Put into bat, Rahane added 83 with opening partner Shikhar Dhawan (38) in 20 overs before the wheels fell off the Indian innings.
From 134 for three in 34 overs, India collapsed to 165 for nine in the next 10 overs. Even the 200-mark did not look a possibility until number 11 Mohammad Shami smacked 25 runs off 18 balls as India were dismissed in the 49th over.
In reply, England lost their openers early and looked in trouble as their first 66 runs cost them the top half of their batting order.
But Taylor, beneficiary of a missed run-out chance, and Buttler, dropped by Raina in the slips on 21, arrested the slide and put the chase back on track with sensible batting.
The final takes place in Perth on Sunday.
India 200 all out in 48.1 overs (Rahane 73, Finn 3-36)
England 201-7 in 46.5 overs (Taylor 82, Binny 3-33)