West Bromwich Albion left it late to claim a 2-2 draw at home to Crystal Palace as Saido Berahino's injury-time spot kick snatched them a point in the Premier League.
The visitors took the lead via Brede Hangeland's close-range strike, before Mile Jedinak converted a penalty of his own after Yannick Bolasie had been tripped.
The Baggies battled back after half time, with substitute Victor Anichebe heading one back despite Craig Dawson's apparent foul on goalkeeper Julian Speroni.
As the game moved into injury time, Anichebe was upended by Jedinak, and Berahino fired home the penalty to earn Albion a share of the spoils.
Here, Sports Mole rates each of the players involved at The Hawthorns.
WEST BROMWICH ALBION
Goal
Ben Foster: Could do little about Hangeland's close-range effort and was sent the wrong way with Jedinak's penalty. Had little to do after the interval. (6/10)
Defence
Andre Wisdom: Looks a very encouraging prospect. Was given a tough time by Bolasie, but coped fairly well despite his relative inexperience. (6/10)
Craig Dawson: Had a big role in the first goal, appearing to elbow Speroni as the Palace keeper tried to claim. (6/10)
Joleon Lescott: Had a strong game at the heart of the defence, often winning the battle with Frazier Campbell, particularly in the air. Clearly improving with regular football. (6/10)
Sebastian Pocognoli: Struggled to deal with Wilfried Zaha or Bolasie running at him, and somehow avoided a booking despite committing numerous fouls. (5/10)
Midfield
James Morrison: Played some lovely passes in midfield and mopped things up very well. Made one crucial tackle on Bolasie to stop a goalscoring chance. (7/10)
Craig Gardner: Hit numerous shots from distance, with two going relatively close. Often late in the tackle, however. (6/10)
Chris Brunt: Another superb set-piece delivery from the midfielder, whose corner was dangerous enough for Anichebe to attack. (7/10)
Graham Dorrans : Disappointing afternoon, often wasting possession in good positions. Subbed with seven minutes remaining. (5/10)
Stephan Sessegnon: Poor display from an inconsistent performer. Taken off at half time for game-changer Anichebe. (5/10)
Attack
Saido Berahino: Showed excellent composure to notch his eighth goal of the campaign with his injury-time penalty. Becoming a reliable first-choice frontman. (7/10)
Substitutes
Victor Anichebe: Changed the game, scoring the first and winning the penalty which led to the second. Became the focal point for attacks and without him, West Brom would have lost the game. (8/10)
Sebastian Blanco: Entered proceedings with just minutes remaining. Booked. (5/10)
CRYSTAL PALACE
Goal
Julian Speroni: Relatively untroubled until conceding just after the break. Injured by Dawson as he tried to claim and subsequently replaced. (6/10)
Defence
Brede Hangeland: Struggled to cope with Anichebe's presence after half-time. Showed good agility to swing a boot at the ball for the opener. (6/10)
Adrian Mariappa: Similar to Hangeland, the defender did not put in the kind of display which will see Neil Warnock favour him over Scott Dann or Damien Delaney once they return. (5/10)
Martin Kelly: Did okay, particularly in the first half as Wisdom repeatedly tried to squirm his way into the box. (6/10)
Joel Ward: Gave the ball away too easily in the second half when Palace needed to retain possession. (6/10)
Midfield
Wilfried Zaha: Disappointing display from the winger, who should believe in his ability to take on defenders more. Seemed to shy away from the game a little. (5/10)
Yannick Bolasie: The opposite to Zaha in that he was involved with everything. Was the best player on the field before Anichebe began to make his mark. (7/10)
Mile Jedinak: Scored his team's penalty in the first half before conceding a foolish one with time running out. A poor error from the skipper. (5/10)
Joe Ledley: On the periphery of the game for much of it. Delivered the odd decent set piece but was rarely heavily involved. (5/10)
Marouane Chamakh: Did well in a deeper role, providing the link between midfield and attack. Made one surprisingly excellent challenge, proving he is not afraid to get involved. (6/10)
Attack
Frazier Campbell: Lacked much support and worked off of scraps mostly. Tried to link up with Bolasie as often as possible (6/10)
Substitutes
Wayne Hennessey: On for Speroni after the concession of the first goal, the keeper dealt well with most that was thrown at him. Guessed correctly for the penalty, but failed to stop it. (5/10)
Jason Puncheon: Offered little going forward despite being introduced with plenty of time remaining. Unfortunate not to start. (5/10)
Adlene Guedioura: Similar to Puncheon, making little impact after coming off the bench. (5/10)