League leaders Manchester Utd were stunned 2-1 by West Ham at Upton Park which put a five-game winning streak to an end.
The champions had led early on through Cristiano Ronaldo's 13th league goal of the season.
Anton Ferdinand pulled West Ham level with a header in the 78th minute before Matthew Upson gave the Hammers victory.
Elsewhere, Dimatar Berbatov scored four goals in an extraordinary 6-4 victory for Tottenham over Reading.
Salomon Kalou scores Chelsea's second goal
Sunderland eased their relegation troubles with a 3-1 win over Bolton while Middlesbrough did likewise with a 1-0 win at Portsmouth.
Wigan slipped to a 2-1 home defeat to Aston Villa, while Birmingham and Fulham finished a goal apiece.
There was a controversial late winner as Chelsea beat Newcastle United 2-1 at Stamford Bridge.
And Avram Grant became the target for Chelsea booing for the first time since taking charge three months ago.
Eduardo da Silva's first Premier League goals helped Arsenal beat Everton and ensured they leapfrogged Manchester United at the top of the table with a 4-1 win.
All Premiership results
West Ham 2-1 Man Utd
Chelsea 1-0 Newcastle
Birmingham 1-1 Fulham
Portsmouth 1-0 Middlesbrough
Wigan 1-2 Aston Villa
Sunderland 3-1 Bolton
Tottenham 6-4 Reading
Everton 1-4 Arsenal
Arsenal had to come from behind after Tim Cahill slotted in on 19 minutes but Eduardo levelled after the break and coolly slotted another on 58 minutes.
Emmanuel Adebayor hit a third after a mix-up in Everton's defence and then Tomas Rosicky scored late on.