West Ham capitalised on 25 minutes when Sol Campbell’s horrific attempted clearance allowed Reo-Coker a free run on goal from which the skipper coolly slotted past Jens Lehmann. The Hammers then doubled their lead when Zamora shrugged off Campbell in the box and curled his effort superbly into the Arsenal net on 32 minutes.
Despite record-signing Ashton taking his place on the West Ham bench, the powerful front two pairings of Bobby Zamora and Marlon Harewood continued to cause problems to the Arsenal back-line. But Arsenal responded just before the break when West Ham failed to clear their lines from a Freddie Ljungberg run.
Pires’ low drive through a crowd of players deflected in off Henry to give the Frenchman the league goals record for the club, overtaking Cliff Bastin’s total of 150.
Campbell failed to re-appear for the second half, handing youngster Sebastian Larsson a rare start and a further reshuffle to the Arsenal defence.
Arsenal started the second half with the same verve as they began the first with Pires and Ljungberg wasting good chances and van Persie causing problems from set-pieces.
Henry then broke free inside the area but saw his bending effort whistle past the far post.
But Arsenal failed to find the net and Matthew Etherington stretched the Hammers’ lead after Larsson and Phillipe Senderos were caught in possession in defence.
Ashton came on for his debut in place of goal scorer Zamora.
Pires pulled one back on 90 minutes to set up a tense finish, but the Hammers held on for a hard-fought victory.
Arsenal: Lehmann, Gilbert (Flamini 27), Djourou, Campbell (Larsson 45), Senderos, Ljungberg, Diaby (Bergkamp 71), Silva, Pires, Henry, Van Persie.
Subs Not Used: Almunia, Hleb.
Goals: Henry 45, Pires 89.
West Ham: Hislop, Clarke (Fletcher 76), Ferdinand, Gabbidon, Konchesky, Benayoun (Newton 66), Mullins, Reo-Coker, Etherington, Harewood, Zamora (Ashton 73).
Subs Not Used: Bywater, Sheringham.
Goals: Reo-Coker 25, Zamora 32, Etherington 80.
Watch the full game below: