Marouane Fellaini hit an injury-time equaliser as Everton twice came from behind to claim a 2-2 draw and deny struggling West Ham a much-needed win.
The Hammers and their beleaguered manager Avram Grant seemed on course for victory at Goodison Park as Frederic Piquionne headed them in front for the second time six minutes from time. But Piquionne was sent off for celebrating with fans and the Hammers, who remain bottom of the Barclays Premier League, were denied as Fellaini struck.
The visitors had taken the lead after 27 minutes as Jonathan Spector found the net for the fourth time in two months, but Diniyar Bilyaletdinov came off the Everton bench to level.
The Hammers started well and Mark Noble was picked out by Scott Parker on the 18-yard line, but his chip just dipped over the crossbar.
West Ham snatched the lead when Luis Boa Morte latched on to a Noble pass and squared for the onrushing Spector to slide home, while Piquionne almost added a second soon after, heading a Spector cross against the far post.
Everton boss David Moyes decided to change his attack by sending on Louis Saha, fit again after a thigh strain, for Jermaine Beckford at half-time, but it was West Ham who went close when Zavon Hines' volley flashed just wide.
However, the hosts pulled level 13 minutes from time as Bilyaletdinov, sent on for the ineffective Victor Anichebe eight minutes earlier, beat Robert Green with a fierce drive.
The West Ham goalkeeper then produced a brilliant save to deny Saha from close range and as Everton pressed for a winner, they were caught by a sucker punch. Wayne Bridge swung in a cross and Piquionne jumped to loop a header over Tim Howard.
Piquionne - who had been booked four minutes earlier - jumped the advertising hoardings to celebrate and was shown a second yellow card.
It was Fellaini, however, who had the last say when he jinked his way into the area in injury time to secure a point for Everton.