Manchester United moved to second place in the Premiership and completed a home-and-away double over Arsenal.
Patrick Vieira headed Arsenal ahead from a corner before Ryan Giggs levelled with a deflected shot.
Dennis Bergkamp restored Arsenal's lead before two goals from Cristiano Ronaldo and a John O'Shea chip ended the Gunners' long unbeaten home record.
Mikael Silvestre was sent off in a fiery game - with Vieira and Roy Keane pulled apart beforehand in the tunnel.
Referee Graham Poll had to step in to calm the feuding captains before the teams went onto the pitch.
And every decision Poll subsequently made was contested by the teams, Ashley Cole's blatant dive in the penalty area after three minutes not helping matters.
The tension-charged atmosphere was heightened when Vieira headed Arsenal ahead from Thierry Henry's corner.
Arsenal continued to push forward, and United duo Heinze and Giggs were booked for clumsy challenges.
But United drew level when Wayne Rooney laid the ball back beautifully for Giggs, whose first-time half-volley was deflected past Manuel Almunia by Cole.
Arsenal went 2-1 up nine minutes before half-time when Henry held the ball up for the on-rushing Bergkamp, who rifled a low, angled drive through the legs of Carroll.
And it might have got worse for the visitors had Rooney, already booked for handball, not escaped with just a ticking-off after appearing to swear at the referee.
It was a near miracle that both sides finished the half with 11 men after a fractious opening period littered with poor tackles and some shameful indiscipline.
With tempers calmed at the start of the second period, United equalised again when Ronaldo scored from an acute angle after being fed by Giggs.
Rooney hit the post moments later before Ronaldo stung Arsenal again.
The winger stabbed home from two yards after Giggs had floated a superb ball in from the right, leaving the badly-positioned Almunia in no-man's land.
United were reduced to 10 men when Silvestre tussled with Freddie Ljungberg on the edge of the box.
But the visitors sealed victory when substitute O'Shea latched on to Paul Scholes' pass and lobbed the ball into the net.
Arsenal: Almunia, Lauren (Fabregas 83), Campbell (Hoyte 79), Cygan, Cole, Ljungberg, Flamini (Reyes 70), Vieira, Pires, Bergkamp, Henry.
Subs Not Used: Lehmann, Van Persie.
Booked: Pires, Reyes.
Goals: Vieira 8, Bergkamp 36.
Man Utd: Carroll, Gary Neville, Ferdinand, Silvestre, Heinze, Fletcher (O'Shea 61), Keane, Scholes, Ronaldo (Brown 70), Rooney, Giggs (Saha 77).
Subs Not Used: Howard, Phil Neville.
Sent Off: Silvestre (69).
Booked: Heinze, Giggs, Rooney, Ronaldo.
Goals: Giggs 18, Ronaldo 54, 58, O'Shea 89.
Ref: G Poll (Hertfordshire).