Peter Odemwingie had put the Baggies in front from the penalty spot in the 38th minute but Scott Parker smashed in a 25-yard effort leveller before the break and Frederic Piquionne put the Hammers ahead from the spot at the start of the second half.
Piquionne then missed a chance to make it 3-1 and was made to pay as Pablo Ibanez popped up with a header to deny Avram Grant's men their first league win since September 25.
Kieron Dyer, in for the injured Valon Behrami, looked lively during the opening exchanges as the home side took the initiative but it was the Baggies that threatened first through a low Odemwingie effort which Robert Green gathered.
West Brom went three on two soon after but Jerome Thomas eventually fired a tame 20-yard effort straight at Green when a pass was clearly the better option.
West Ham continued to have plenty of possession but failed to find a telling pass with which to open up the visitors' defence.
Carlton Cole headed a corner just over the crossbar but there were still too many stray passes from the home side - with Hammers fans growing increasingly frustrated.
Green was alert to punch away Chris Brunt's curling free-kick from the right, with the follow-up shot deflected behind. From the resulting corner West Brom were awarded a penalty when referee Mike Dean spotted Luis Boa Morte had bundled over Steven Reid in a crowded penalty area.
Boa Morte was shown the yellow card and Odemwingie sent Green the wrong way to give the Baggies the lead after 38 minutes.
Upton Park was left in stunned silence, but replays showed the referee was correct.
The home side looked to get themselves on level terms before the break, but again lacked a decisive pass in the final third.
However, out of the blue, midfielder Scott Parker smashed a 25-yard effort into the top-left corner after Cole had done well to win back possession.
Danny Gabbidon's close-range header was held by Scott Carson, who then saved from Boa Morte at his near post as the Hammers continued to press.
Boa Morte was somewhat fortunate to escape a second booking when he went in late on Graham Dorrans, but received only a stern talking to.
The referee then pointed to the spot again in the 50th minute, this time in West Ham's favour as Dyer dashed into the right side of the penalty area and was barged over by Gabriel Tamas.
With regular penalty taker Mark Noble out injured, Piquionne stepped up to fire the Hammers into the lead
Soon after the home fans were in uproar as Parker was left in a heap in front of the advertising boards following a sliding challenge by Thomas which went unpunished.
It was almost 3-1 when Mexico winger Pablo Barrera dashed down the left before feeding Dyer on the penalty arc, and his clever first-time flick released Piquionne on the overlap.
However, the Frenchman's angled drive flew inches wide of the far post.
West Brom substitute Simon Cox then almost had an immediate impact when he drilled a 25-yard effort just wide.
Green then plucked Odemwingie's snapshot out of the air as the visitors looked for an equaliser.
It was 2-2 after 70 minutes when Brunt delivered a lovely deep cross from the left which was met by Ibanez at the far post, who powered a header back into the opposite corner.
The hosts sent on Victor Obinna and Benni McCarthy as they pressed for a winner, yet despite a couple of half-chances, West Brom held out for a point.
West Ham, though, need a win against Blackpool on Saturday if they are to climb clear of trouble.