Manchester United stunned Manchester City with two late goals to claim the Manchester derby and deepen the crisis in Pep Guardiola's side on Sunday evening.
City looked to be in complete control after Josko Gvardiol headed them ahead in the 36th minute, but a moment of madness from Matheus Nunes, who brought down Amad Diallo after a poor back-pass, allowed Bruno Fernandes to equalize from the penalty spot in the 88th minute.
Just under two minutes later, Diallo scored the winner for United when he got onto a ball over the top, prodded it past Ederson, and finished from a tight angle to make it 2-1 and send the visiting supporters wild.
Chelsea moved to within two points of the top of the table after a 2-1 win at home to Brentford.
Marc Cucurella scored a rare header to put Chelsea in front two minutes before halftime.
It looked as if Nicolas Jackson's finish from Enzo Fernandez's pass on the break 10 minutes from time would seal the win, but Brian Mbeumo's shot in the 90th minute ensured a tense end to the match, which saw Cucurella sent off for two yellow cards in injury time.
Tottenham showed their positive side as they raced into a 4-0 lead away to Southampton, with James Maddison, Son Heung-Min and Dejan Kulusevski putting them 3-0 up after just 14 minutes.
Pape Sarr added a fourth after 25 minutes as Southampton fell apart, and some fans started to leave St. Mary's Stadium well before halftime. Those who left missed Maddison making it 5-0 in first-half injury time.
Very little happened after the break, but it looks like the sort of defeat that could cost Southampton coach Russell Martin his job.
On Saturday, league leader Liverpool played for over 70 minutes with 10 men but twice came back to draw 2-2 at home to Fulham.
Andreas Pereira volleyed Fulham ahead after 11 minutes, and Andy Robertson was sent off six minutes later for a professional foul.
Cody Gakpo scored for Liverpool early in the second half, but Rodrigo Muniz's goal in the 76th minute looked as if it would win it for Fulham before Diogo Jota, returning from injury, netted an equalizer just four minutes from the end.
Arsenal failed to close the gap at the top after being held to a 0-0 draw by Everton, who produced a solid defensive display in a game where they managed just one shot on goal.
Anthony Elanga's injury-time goal saw Nottingham Forest produce a late fightback to win 2-1 at home to Aston Villa, when it had looked as if Jhon Duran's 63rd-minute goal would give Villa all three points.
Chris Wood had a goal ruled out for offside before Nikola Milenkovic headed in a powerful equalizer in the 88th minute from Morgan Gibbs-White's cross to set up Elanga's dramatic finish.
Newcastle United thrashed Leicester City 4-0 to show Ruud Van Nistelrooy he has a big task ahead. Jacob Murphy scored twice, while Bruno Guimaraes and Alexander Isak completed the rout.
Crystal Palace continued their recovery and are now unbeaten in their last five games after a 3-1 win away to Brighton, thanks to two goals from Ismaila Sarr, who also set up Trevoh Chalobah for Palace's opener.
Brighton's late consolation came from an own goal by Marc Guehi.
Wolves coach Gary O'Neil was sacked after a 2-1 defeat at home to Ipswich, with Jack Taylor heading in Ipswich's winner three minutes into injury time.
Matt Doherty deflected a shot into his own net after 15 minutes, with Mateus Cunha equalizing before Taylor's winning header led to some Wolves players losing their composure amid ugly scenes after the final whistle.