Eduardo da Silva's first Premier League goals helped Arsenal beat Everton and ensured they leapfrogged Manchester United at the top of the table.
Fabregas congratulates Arsenal scorer Eduardo
Arsenal had to come from behind after Tim Cahill poked in on 19 minutes but Eduardo levelled after the break and coolly slotted another on 58 minutes.
Nicklas Bendtner was then sent off but Emmanuel Adebayor hit a third after a mix-up in Everton's defence.
Mikel Arteta saw red after an elbow before Tomas Rosicky scored late on.
Arteta appeared to strike Cesc Fabregas in the face and the 84th-minute incident sparked ugly scenes as players from both sides squared up to each other.
Until that point it had been a game played in a competitive spirit, which for large spells Everton had dominated - particularly in the first half.
Initially, Arsenal were struggling to shrug off their recent sluggishness, while Everton looked confident, assured and exactly like the form team they were going into the match.
Gunner boss Arsene Wenger had opted to shuffle his attack, leaving out Adebayor and bringing in Bendtner and Eduardo - a pairing with only one Premier League goal between them.
And the way Everton's midfield, particularly the terrier-like Phil Neville, set about stopping Arsenal's supply line it looked like the tally could well remain the same.
There was no time on the ball for the likes of Fabregas, as Everton played with more snap in their tackles and also constructed the slicker passing moves.
Unfortunately Neville's wild shot did not match the sweet build-up to a chance which included a back heel from Yakubu as Everton swaggered with confidence.
However, Everton had already taken the lead by then at a stage in the match that had more pace than precision about it.
Midway through the opening half, an Everton corner caused a goalmouth scramble and the ball popped up off Bendtner's knee, serving to tee it up for Cahill to poke in.
From then on, the Toffees assumed almost full control as they played with plenty of panache in the pouring rain.
But for all their superiority in terms of possession and territory, Everton failed to create any clear openings.
And almost immediately after the break - just 90 seconds after the restart - they were penalised.
A long ball from Gael Clichy, deep in his own half, caught Everton off guard and Eduardo showed superb composure to collect the ball and stroke a shot into the right corner.
It was a moment defender Phil Jagielka, who looked to have hesitated rather than clear the danger, would have wanted to forget but he was to be terrorised further just minutes later.
This time Jagielka was outsmarted by Eduardo as the Croatia international played the ball one side of him and collected it from the other, before calmly slipping the ball beyond Howard.
Everton could only reflect on a chance for Yakubu moments earlier, when the striker should have put his side 2-1 up but misdirected a header when unmarked in the box.
The action, though, was far from finished and Bendtner was given his marching orders for a second yellow card after a high challenge on Andrew Johnson.
Everton, who had been pushing hard for an equaliser, now had a numerical advantage and clearly sensed they could get back into the game.
But they shot themselves in the foot when Joseph Yobo and keeper Howard left the ball to each other on the edge of the box, allowing Adebayor to steal in and smash the ball into an empty net.
And their misery was compounded when Arteta was also sent down the tunnel after clashing with Fabregas, sparking a mass confrontation.
Incredibly there was still time for Rosicky to finish off an Arsenal counter-attack, zipping a shot into the corner to complete the scoring.
Everton manager David Moyes:
"What impressed me was the way we played. I thought we played very well and I thought we were better than Arsenal.
"It's incredible we've lost 4-1. We gave Arsenal a really tough game and I thought the better team lost.
"It was Everton who passed the ball and tried to score good goals and it
was Arsenal who scored off long balls."
Arsenal manager Arsene Wenger explains his decision to rest Emmanuel Adebayor and Tomas Rosicky:
"It was a slight gamble because they are two important players.
"They gave a lot at Portsmouth on Boxing Day and needed a breather.
"We were too nervous and they didn't play enough. Everton made a battle of it and won most of the duels."
Everton: Howard, Hibbert (Johnson 71), Yobo, Jagielka, Lescott, Arteta, Carsley, Neville, Pienaar, Cahill, Yakubu.
Subs Not Used: Wessels, Vaughan, Nuno Valente, Anichebe.
Sent Off: Arteta (84).
Goals: Cahill 19.
Arsenal: Almunia, Sagna, Toure, Gallas, Clichy, Hleb (Diarra 82), Fabregas (Rosicky 88), Flamini, Diaby, Bendtner, Eduardo (Adebayor 74).
Subs Not Used: Lehmann, Senderos.
Sent Off: Bendtner (74).
Booked: Bendtner, Eduardo, Clichy, Fabregas, Flamini.
Goals: Eduardo 47, 58, Adebayor 78, Rosicky 90.
Ref: Martin Atkinson (W Yorkshire).
BBC Sport Player Rater man of the match: Eduardo 7.65 (on 90 minutes).
Please note that you can still give the players marks out of 10 on BBC Sport's Player Rater after the match has finished.