Tim Howard saved from Marco van Ginkel to give Roberto Martinez’s men the advantage, 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, but they will have to settled for a place in the third-place play-off on Saturday.
Everton started the brighter of the two, but Stoke had the first chance of the match as Peter 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 through Kevin Mirallas’ free kick, which was met by a Phil Jagielka header which whistled over.
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 in stoppage time, as 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, but substitute Steven 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 as 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 – making his Everton debut – 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 spot kicks.
It was dead level at 1-1 before Van Ginkel stepped up and fired his spot kick 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 in the final.