Tim Howard saved from Marco van Ginkel to give Roberto Martinez’s men the advantage in the shoot-out, before Phil Jagielka fired home the winning spot kick to send them into Saturday’s final.
Romelu Lukaku had a goal ruled out for offside in first-half stoppage time before the striker spurned a glorious chance to win it late on, while Steven Naismith saw an effort saved by Stoke debutant Jakob Haugaard.
Peter Odemwingie went closest for the Potters, who will have to settle for a place in the third-place play-off against the Singapore Select XI, who lost 4-0 to Arsenal in Wednesday’s other game.
Everton started the brighter of the two, but Stoke had the first chance of the match as Odemwingie fired a first-time effort wide from Marko Arnautovic’s low cross.
The Toffees enjoyed much more of the possession, though, and went close themselves when Kevin Mirallas’ free-kick was met by a Jagielka header which whistled over the crossbar.
Arnautovic then looked to be in as he muscled Tony Hibbert off the ball and bore down on goal, only to see Jagielka race back to make a vital last-ditch tackle.
As the game approached the break, Lukaku thought he had put Everton in front when he latched on to Steven Pienaar’s through ball before rounding the goalkeeper and tapping home, but the flag went up for offside and it remained level after 45 minutes.
The inevitable host of changes came at the start of the second half, and substitute Naismith almost had an immediate impact as he fired a rasping effort at goal, only to see it turned behind by a fine save from Haugaard.
The game opened up as the heat took its toll and the substitutions kept coming, but there were chances to win it. Stephen Ireland went close when his flick from close range was kept out by Howard, while Gerard Deulofeu’s low effort across goal was saved at the other end.
Lukaku had two glorious late chances, the first of which coming from sloppy play from Van Ginkel, but the Belgian could only drag his shot wide.
In stoppage time Tom Cleverley fired an excellent ball over the top for Lukaku, but Haugaard raced off his line to stop him in his tracks and the match went to penalties.
It was level at 1-1 before Van Ginkel stepped up and fired his effort to the left, only to see Howard guess correctly and turn it away.
He would be the only player to fail to score, as Everton scored five out of five with captain Jagielka firing the winning penalty into the top corner to put his side into the final.