James Beattie's early strike continued Everton's revival and condemned Arsenal to another disappointing away defeat.
Beattie celebrates his goal
Beattie raced on to Tim Cahill's pass to beat Jens Lehmann in the 13th minute and give David Moyes' side a fourth successive Premiership victory.
Everton keeper Nigel Martyn turned Freddie Ljungberg's shot on to the post and saved well from Cesc Fabregas.
Fabregas' misery was then complete when he was sent off for an injury-time bust-up with Cahill.
Everton kept Alan Stubbs on the bench after he returned from Sunderland on a free transfer.
Sol Campbell was recalled in defence for Arsenal and youngster Kerrea Gilbert given a Premiership debut at right-back.
Beattie gave Arsenal's rearguard a torrid first 45 minutes, and he posted the warning signals after only eight minutes when it took a desperate challenge from Gilbert to halt him as he raced on to Phil Neville's pass.
Everton had an astonishing escape after 12 minutes when Gilbert's cross found Ljungberg at the far post.
The Swede's shot was scrambled on to an upright by Martyn before Fabregas shot wildly over from the rebound.
Arsenal paid the price within seconds as Everton swept to the other end to take the lead.
Cahill's pass was pursued by the determined Beattie, who muscled between Campbell and Philippe Senderos to steer a finish past Lehmann.
Arsenal were losing the physical battle, but a brilliant pass from Thierry Henry sent in Fabregas, whose close range shot was blocked by Martyn.
Fabregas then gifted Beattie a golden opportunity to double Everton's advantage with a wayward back pass in the 24th minute, but he opted to take the chance first time rather than go around Lehmann and shot wide.
Everton suffered a setback on the half-hour when defender Matteo Ferrari limped off to be replaced by Stubbs.
Arsenal dominated possession for the first 20 minutes after the break, but Everton broke forward to almost add the crucial second.
Campbell was forced to make a vital interception as Beattie closed in on Leon Osman's cross - and Cahill headed Mikel Arteta's resulting corner only inches off target.
Arsenal were not creating clear-cut chances and boss Arsene Wenger made a change with 17 minutes left, replacing Gilbert with Alexander Hleb.
As Arsenal's frustration grew, Fabregas barged Cahill to the ground and was sent off - but Everton's midfield man also picked up a yellow card that rules him out of the FA Cup fourth round tie against Chelsea at Goodison Park.
Everton manager David Moyes:
"It was a really, really top performance by the players. It's been coming.
"We had chances. Got round them and probably limited them to not too many opportunities.
"I think the players we have got are coming into the form we thought they had. Confidence is high and things are looking a lot more rosy."
Arsenal boss Arsene Wenger:
"We lost a difficult game in a frustrating way because it was mainly a physical battle.
"In the second half we were on top of the game but we didn't create enough.
"Away from home we have a problem. We always lose 1-0 and we need to find a response by the end of the season to finish in the top four."
Everton: Martyn, Hibbert, Ferrari, Weir, Nuno Valente, Osman, Neville, Arteta, Kilbane, Cahill, Beattie. Subs: Wright, Naysmith, Ferguson, McFadden, Stubbs.
Arsenal: Lehmann, Gilbert, Campbell, Senderos, Lauren, Ljungberg, Silva, Fabregas, Pires, Henry, Reyes. Subs: Almunia, Diaby, Hleb, Flamini, Djourou.
Referee: A Wiley (Staffordshire)