Premier League: Arsenal 3 West Ham 1
The hosts were far from their fluid best at the Emirates Stadium but did enough to record a first league win since mid-March thanks to Lukas Podolski and Olivier Giroud.
West Ham have now lost their last four against Arsenal, despite taking a lead in each, Matt Jarvis striking first here with just his second goal of the campaign in the 40th minute.
However, Arsenal were only behind for four minutes as Podolski converted Santi Cazorla's throughball, and Giroud put them ahead in the 55th minute with a composed finish.
The Germany international - who played a full 90 minutes after recently complaining about his frequent withdrawal from matches - sealed the win with a second goal 12 minutes from time.
Arsenal climb above Everton in the table by a point, though Roberto Martinez's side have a game in hand.
The visitors, who remain seven points clear of the relegation zone, began the game with an urgency and pace as they pegged their hosts back in the opening 20 minutes.
Mohamed Diame had two chances to opening the scoring but saw his first effort blocked, and he skied a second over the crossbar from Andy Carroll's neat cut-back.
Arsenal finally burst into life 30 minutes in as Cazorla threaded a pass through to Giroud in the penalty area, but France international's half-hearted flick was easily saved by Adrian.
He was made to rue that finish as West Ham took the lead five minutes before the break.
Antonio Nocerino raced away from Kim Kallstrom, making his first Arsenal start, with Jarvis following in with a brave header after Wojciech Szczesny saved the Italian's shot.
West Ham's goal was the catalyst to set Arsenal into life and they were on level terms just four minutes later as Cazorla latched onto a poor clearance from Stewart Downing and found Podolski, who slotted home.
Ten minutes into the second half Giroud made up for his earlier miss to move Arsenal in front for the first time in the game.
Thomas Vermaelen delivered a lofted pass into the penalty area that the 27-year-old controlled superbly before firing first-time under Adrian.
Podolski and Cazorla both went close to extending the hosts' lead just after the hour, but Adrian saved well from the German and Cazorla's 20-yard strike was just wide of goal.
The points were sealed in the 78th minute as Podolski doubled his tally, the forward lashing his sixth league goal of the season high into the roof of the net after substitute Aaron Ramsey's headed pass.