Darren Ambrose followed up his first goal of the season in the midweek win at Brighton by putting the Eagles ahead on six minutes following woeful West Ham defending.
Julian Speroni's long punt forward was flicked on by Glenn Murray and Jonathan Williams unselfishly set up Ambrose to side-foot past Manuel Almunia from six-yards.
The visitors hit back immediately and Carlton Cole dragged a shot wide before Hammers skipper Kevin Nolan restored parity on 16 minutes.
George McCartney's left-wing cross was only partially cleared and Cole headed back across goal for Nolan to head home unmarked from close range for his third West Ham goal.
Nolan could have added to his tally but headed straight into the arms of Speroni moments before the interval and then blasted Henri Lansbury's cut-back wastefully over from the edge of the box.
Murray then squandered a glorious opportunity to put the home side back in front at the other end.
Talented teenager Wilfried Zaha dragged two West Ham defenders out wide and sent in a low cross that was flicked on by Williams but Murray bobbled his finish wide of Almunia's goal from six-yards.
Dougie Freedman's side began the second period strongly and Murray atoned for his late first-half miss by putting Palace back in front seven minutes after the restart.
Zaha was again involved as he flicked the ball square to striker Murray and the former Brighton man beat Almunia with a composed finish into the bottom right-hand corner from 15-yards for his third goal of the season.
Sam Allardyce sent on strikers Sam Baldock and Carew with just over 20 minutes to go and the latter levelled the contest for a second time 10 minutes before full-time.
McCartney sent in another left-wing cross and the towering Norwegian rose to cushion a header past Speroni from close range for his first West Ham goal since switching to Upton Park from Aston Villa in the summer.
Palace looked to take the lead for a third time and Paddy McCarthy headed down at the other end but Murray could only scoop over .
Eagles substitute Jermaine Easter then fired an ambitious 25-yard effort wide in the final minute as both sides were forced to settle for a point.