Tijjani Reijnders fired the visitors into a first-half lead in the first leg of the Europa Conference League semi-final clash, with frustration building for the Hammers at a number of decisions from the referee.
They turned it around after the break though, with Said Benrahma converting from the penalty spot before Michail Antonio poked home from close range.
Here’s how David Moyes’s side rated at the London Stadium...
Alphonse Areola 3
Usually so reliable, goalkeeper was poor in being beaten at near-post by Reijnders strike.
Thilo Kehrer 6
Cause problems by Van Brederode, Alkmaar’s liveliest forward, but much better after the break.
Kurt Zouma 7
Fit to return after ankle injury and was solid. Superb run through midfield made late opening for Bowen cross that should have been converted.
Nayef Aguerd 6
Like Zouma, relatively untroubled and made important contribution with header in build-up to Antonio goal.
Aaron Cresswell 6
Some good work going forward, though needless handball to squander decent opening was frustrating.
Tomas Soucek 5
Slow to get out to Reijnders for opener. Made some amends with important header in build-up to penalty.
Declan Rice 7
Showed good composure to pick out Aguerd with cute cross ahead of Antonio goal.
Lucas Paqueta 8
A pleasing blend of silk and steel, even if final ball was missing. Booked.
Jarrod Bowen 7
Gave deputising full-back De Wit a difficult night. Went close to leveller with near-post strike. Brave header in front of Ryan earned spot-kick.
Michail Antonio 8
Dominated several defenders, who struggled to deal with Jamaican’s physicality. Alert to poke in the crucial second.
Said Benrahma 8
West Ham’s best player and would have opened scoring if not for superb Ryan save. Brilliant pressure penalty. Missed a glorious chance for a third, though.
Danny Ings (Antonio 79’) 6
Lovely bit of link-up made Benrahma chance.
Pablo Fornals (Benrahma 90’)
Unused:Fabianski, Anang, Johnson, Emerson, Potts, Downes, Lanzini, Fornals, Cornet, Mubama