Manuel Lanzini doubled the lead with a sensational volley and he added to his tally from the penalty spot in first-half stoppage time.
Story of the match
The hosts were nearly on the board moments later as Will Hughes sent in a ball that was deflected to Jordan Ayew, but he hit the woodwork with his shot.
Vicente Guaita denied Antonio on a pair of chances and then subsequently forced a Benrahma header to safety.
On 23 minutes, the visitors were on the board when Benrahma sent on a cross that Antonio toed home to give the Hammers the lead.
The lead was doubled as Declan Rice carried the ball through the middle of the park and his pass found Lanzini, whose volley from 15 yards flew past Guaita.
Palace almost cut the lead in half as Ayew squared for Edouard, who hit the woodwork with a first-time effort from the center of the box.
Luka Milivojevic was adjudged to have handled the ball in the box and Lanzini stepped up to the spot, beating Guaita to cap a dominant first half from the visitors.
In the 55th minute, Ayew strode down the right, cut the ball back and slid it between the defense to Edouard, who could only fire wide.
Olise began the comeback in the 82nd minute, swinging in a cross close to goal to Edouard, who arrived late to turn home to make it 3-1.
Jean-Philippe Mateta nearly completed the improbable comeback as his overhead kick flew just past the post and the final whistle sounded.
Man of the match: Manuel Lanzini
Picked up two of the goals, should have had an assist and remains David Moyes' best player as of late.