Dimitri Payet’s 90th-minute winner completed a stunning late West Ham comeback against 10-man Everton to maintain their top-four challenge.
Romelu Lukaku fired Everton into the lead before Kevin Mirallas picked up a second yellow before half-time.
Aaron Lennon prodded home to double the lead and with 20 minutes left Lukaku saw a poor penalty saved by Adrian.
Michael Antonio and Diafro Sakho each scored a header, before Payet pounced for West Ham’s third in 12 minutes.
The victory, only West Ham’s second in their past 10 away matches, sees Slaven Bilic’s side leapfrog Manchester United, who play on Sunday, into fifth in the table.
Everton have now lost three of their past four league games at Goodison and stay 11th.
Re-live West Ham’s dramatic win at Goodison
Follow reaction to all of Saturday’s games
Toffees pay the penalty
Recent home defeats by Swansea and West Brom meant the pressure was on Everton to record a home victory, and Roberto Martinez’s side started very well.
James McCarthy had a fierce shot tipped over before Lukaku turned Reece Oxford on the edge of the box to fire home off the post, with Ross Barkley’s brilliant volley parried out soon after.
Even after having Mirallas sent off – after one yellow card for simulation and another for a late challenge on Aaron Cresswell – Everton continued to impress, and their second goal was excellent, Lennon finishing after a slick exchange with Lukaku.
But the crucial moment was yet to come.
Lukaku’s weakly struck penalty, after Alex Song was penalised for a foul on Muhamed Besic, meant the home side failed to seal what would have been a sensational win – and was the trigger for West Ham’s dramatic comeback.
Brave Bilic and silky Payet
Scoring three goals in the last 12 minutes to snatch victory from looming defeat is no mean feat – even against 10 men.
With his side 1-0 down at half-time West Ham manager Bilic committed to setting up his side to attack – despite the obvious danger the Toffees posed on the break through Lukaku.
Striker Andy Carroll was introduced for 17-year-old defender Oxford, and two further changes soon followed but the major driving force of the Hammers’ turnaround was Payet.
This season the Frenchman has arguably been West Ham’s best player and today his influence was vital, crossing for Sakho’s leveller before providing an instinctive finish to turn home a loose ball in the box just before injury time.
Man of the match – Dimitri Payet (West Ham)
What did the managers make of it?
Everton manager Roberto Martinez: “The key moment was the penalty. That would have been game over and it is a feeling of missed opportunity.
“Everyone got a bit shocked at that moment. The effort, with a man down, it went to the last 10 minutes we found it difficult to do what we had been doing – the way we had to match 11 men cost us in the final 10 minutes.
“It is a shame we could not win because up until the 78th minute we were well worth winning it.”
West Ham manager Slaven Bilic: “It feels great. We don’t have a great record here – we don’t have a record here at all to be fair.
“This is why English football is so attractive and so good basically. If they scored a penalty we could have lost three or four nil.
“However, nobody could say that over 90 minutes we didn’t deserve it. We did, and that is what makes me proud of the team. It is a great day for West Ham.”
The stats you need to know
- Romelu Lukaku has scored in all eight of his Everton appearances against West Ham United in all competitions.
- Lukaku has now scored 18 league goals this season, beating his previous highest tally of 17, set in 2012-13 while on loan from Chelsea at West Brom.
- Mark Noble made his 250th Premier League appearance for West Ham United in this match; the first Hammer to reach this landmark in the competition.
- Since his debut, Adrian has saved twice as many penalties as any other goalkeeper in the Premier League with four.
- West Ham recovered from two goals down to win a Premier League game for the first time since their 5-4 win over Bradford City in February 2000.
What’s next for both sides?
Both Everton’s and West Ham’s next match comes in the FA Cup sixth round – the Toffees play at home to Chelsea next Saturday, while West Ham play at Manchester United next Sunday.