Andrew Johnson's stoppage-time goal maintained Everton's European push.
Johnson has scored 11 league goals this season
Johnson had worked hard throughout the game without really having a chance to speak of before he crashed a shot past Arsenal's Jens Lehmann after a corner.
Everton twice struck the woodwork, with Lee Carsley driving a first-half effort against the post, while Leon Osman hit the frame with a shot after the break.
Tim Howard saved well from Jeremie Aliadiere and Cesc Fabregas but Arsenal missed the injured Thierry Henry.
The win moved Everton up to sixth place in the Premiership table, just a point behind Bolton and with those two sides due to meet on 9 April at the Reebok Stadium.
As so often this season, Arsenal moved the ball with swift precision but never really looked like scoring once the ball reached the penalty box.
Third-placed Arsenal, who have a game in hand over Liverpool, return to Merseyside in a fortnight, and are just a point ahead of Rafael Benitez's side, who drew 0-0 with Aston Villa on Sunday.
In Johnson, Everton had the game's most dangerous looking forward, even if few chances had come his way until that dramatic finale.
His goal was a reward for his persistence as well as his intelligent running and ability to hold up the ball.
Johnson, who was partnered in attack by the 18-year-old James Vaughan, had almost got the better of Lehmann as the Arsenal keeper tried to deal with a difficult bouncing ball but the German recovered well to clear.
While Johnson busied himself in attack, Manuel Fernandes did his best to disturb Arsenal's midfield with a gritty performance.
It was another Everton midfielder, Carsley, who came closest to scoring in the first half when his powerful shot crashed against the post.
In the closing stages of that opening half Arsenal's patient passing game began to bear fruit as Aliadiere and Fabregas drew saves from Howard.
Just before the hour Aliadiere missed a good chance to score his first league goal since August 2002 when he sent the ball over the bar after good work by Justin Hoyte and Tomas Rosicky.
Arsenal boss Arsene Wenger introduced Theo Walcott and Alexander Hleb but it was Everton who entered the closing stages in stronger fettle as Osman rattled the post with a toe poke.
And Johnson rounded off a determined Everton performance when he angled a shot past Lehmann after Arsenal failed to clear a corner.
Everton manager David Moyes:
"That is four points we have taken from Arsenal this season and hopefully that shows sign of progress.
"I think we deserved to win and credit goes to the players. Our keeper had to make saves and fortune favoured us.
"This a terrific group of lads. It's going to be tough for the rest of the season but hopefully we'll give our supporters something to shout about."
Arsenal manager Arsene Wenger:
"We had opportunities but we didn't use them. At the moment we're not taking our chances.
"The final ball in our counter-attacks also wasn't good enough and when you don't score then you can be caught out.
"It's very cruel and hard to take as we have conceded late goals three times this month."
Everton: Howard, Neville, Yobo, Stubbs, Lescott, Osman, Carsley, Fernandes, Arteta, Johnson, Vaughan (Anichebe 86).
Subs Not Used: Wright, Hibbert, Naysmith, Beattie.
Booked: Stubbs, Fernandes, Lescott, Vaughan, Johnson, Anichebe.
Goals: Johnson 90.
Arsenal: Lehmann, Toure, Silva, Gallas, Hoyte, Ljungberg, Fabregas, Diaby, Rosicky (Hleb 69), Julio Baptista (Denilson 85), Aliadiere (Walcott 75).
Subs Not Used: Almunia, Senderos.
Ref: M Clattenburg (Co Durham).