England will take on Australia in the Tri-Series final on Sunday after beating India by three wickets at the WACA.
Steven Finn impressed on the field by taking three wickets as England bowled India all out for 200 in their innings.
In reply, Ian Bell and Moeen Ali opened the batting, but it was a wobbly start for England as Mohit Sharma dismissed the former for lbw with just 14 runs on the board.
Bell only mustered 10 off 13 deliveries, and Ali failed to do much better as he eventually followed his teammate back to the pavilion having hit 17 off 34.
From then on, wickets began to tumble as Joe Root was caught and bowled by Stuart Binny for three, while captain Eoin Morgan was taken out 10 runs later by the Indian bowler for just two.
Binny continued his rout with the dismissal of Ravi Bopara, who contributed just four runs, and the situation looked bleak for England as they sat on 66-5 after 19.6 overs, but James Taylor and Jos Buttler were able to steady the innings.
The duo secured half-centuries and helped edge England closer to their 201-run target, but Taylor was eventually taken out by Sharma on 82 off 122 balls, leaving his side needing 10 runs to win.
Mohammed Shami ended Buttler's time at the crease after the batsman hit 67 runs off 68 deliveries, but unbeaten duo Chris Woakes and Stuart Broad were able to get England over the line.