Efter lite mer än en kvart gjorde Stoke 1-0 genom Xherdan Shaqiri. Österrikaren Marko Arnautovic stod för ett fint förarbete och Shaqiri kunde rulla in ledningsmålet i det bortre hörnet, från en position inne i straffområdet.
Men det var inte länge som Stoke fick jubla. I den 22:a minuten frispelades Romelu Lukaku i straffområdet och då gjorde inte belgaren något misstag, utan tryckte in 1-1 bakom Butland.
Precis innan pausvilan satte dock Shaqiri sitt andra mål för kvällen, till 2-1 för Stoke. Den förre Basel-spelaren lobbade in bollen snyggt i det bortre hörnet, från en position utanför straffområdet.
Efter lite mer än en timmes spel satte Romelu Lukaku sitt andra mål för kvällen. Han tog ner bollen i utkanten av straffområdet och tryckte in 2-2 i det bortre hörnet.
Kort därefter satte Gerard Deulofeu 3-2 till Everton. Spanjoren slog in ett inlägg längs med marken från nära håll.
Joselu kvitterade dock för Stoke, till 3-3, med tio minuter kvar att spela. På en retur kunde han trycka in bollen förbi Tim Howard.
Stoke vann dock med 4-3, efter att Marko Arnautovic satte det avgörande målet på tilläggstid. Stjärnan förvaltade en straff och blev stor hjälte.
Evertons startelva: Howard - Galloway, Funes Mori, Stones, Coleman - Barkley, Barry (c), McCarthy - Deulofeu, Lukaku, Koné
Stokes startelva: Butland - Pieters, Wollscheid, Shawcross, Johnson - Whelan, Cameron - Arnautovic, Afellay, Shaqiri - Bojan