Vitaly Janelt scored an equaliser deep into stoppage-time to extend Brentford’s unbeaten run in the Premier League to 11 matches.
With the six minutes’ added time all but up, Janelt rose highest at the back post to head home Bryan Mbeumo’s inviting cross and cancel out Ebere Eze’s second-half header.
It was a grandstand finish to a game that never really caught light on a grey afternoon at the Gtech Community Stadium.
While Brentford will probably feel they were the better side over the 90 minutes, Thomas Frank’s side needed Janelt’s late intervention to preserve an unbeaten league run which stretches back to October.
Brentford make three changes and switch to 4-3-3
The Bees reverted to the line-up which had seen them beat Southampton 3-0 on their last outing at the Gtech Community Stadium.
Aaron Hickey, Josh Dasilva and Yoane Wissa were restored to the starting XI in place of Kristoffer Ajer, Janelt and Mads Roerslev.
Patrick Vieira’s Crystal Palace were once again without Wilfried Zaha, a hamstring injury keeping him out.
From last weekend’s draw against Brighton and Hove Albion, Joachim Andersen and Albert Sambi Lokonga came in for James Tomkins and Will Hughes.
Brentford: Raya; Hickey (Lewis-Potter 76), Pinnock, Mee, Henry (Janelt 76); Norgaard (Baptiste 84), Jensen, Dasilva (Damsgaard 63); Mbeumo, Wissa (Schade 63), Toney
Subs not used: Cox, Zanka, Ajer, Roerslev
Crystal Palace: Guaita; Clyne, Andersen, Guehi, Mitchell (Richards 82); Olise (Ahamada 79), Lokonga (Eze 63), Doucoure, Schlupp; Ayew, Mateta (Edouard 79)
Subs not used: Whitworth, Milivojevic, McArthur, Hughes, Riedewald
Attendance: 17,122
Norgaard and Mbeumo go closest during a goalless first half
Brentford had plenty of possession in the early stages.
Crystal Palace were happy to play on the break, using the guile of Michael Olise to get them up the pitch.
Ben Mee picked up an early yellow card for hauling back Jordan Ayew, and Andersen whipped over the bar from the resulting free-kick, but most of the action in the opening stages took place in Palace’s half.
Christian Norgaard steered a loose ball wide from 15 yards following a period of head tennis.
Josh Dasilva then dispossessed Lokonga in midfield. The ball was worked out to Mbeumo, whose low cross was just out of reach of Wissa at the near post.
Palace grew into the game as the half went on. Olise’s rising effort was smartly tipped over the bar by David Raya. The former Reading man was at the heart of all things positive for the away side, his delivery from set-pieces proving a particular danger.
Twice his out-swinging corners from the left were met by Andersen but on both occasions Raya made simple claims.
Brentford finished the half the better and had two decent sights of goal before the break.
Neat one-touch football from Dasilva and Mathias Jensen found Ivan Toney in space, his low effort from 25 yards wasn’t the cleanest connection and Guaita got down to save.
Then, after Mee’s header back across goal was cleared, Mbeumo weaved past a pair of challenges before shooting just wide from the edge of the D.
Janelt heads home at the death to earn the Bees a point
The early stages of the second half were just as even as the first.
Jeffrey Schlupp and Jean-Philippe Mateta had headers off target for Palace while Brentford’s best chances both fell to Norgaard.
The first saw the Danish midfielder flick Jensen’s free-kick across the face of goal and wide.
The pair combined again shortly after, this time Norgaard connecting sweetly with a volley from Jensen’s knockdown which Guaita showed good hands to claim.
Both sides sensed there was a game to be won and made attacking changes. Kevin Schade and Mikkel Damsgaard came on for Brentford on the hour, as did Palace’s Eze. And it took Eze just seven minutes to strike.
From Ayew’s clipped cross, Cheick Doucoure slid in Olise. The winger cut onto his left and chipped an inviting ball to the back post which Eze nodded past Raya from close range.
Palace could have put the game to bed, Olise having a shot blocked by Mee and Henry denying Mateta, before Brentford’s late onslaught came.
Toney shot over, off balance, from 15 yards and Schade headed off target from Jensen’s cross as Palace sunk deeper and deeper towards their own goal.
Marc Guehi made a crucial block to divert Schade’s sweetly struck volley to safety, something Pinnock did equally well to deny Odsonne Edouard at the other end – Naouirou Ahamada dragging the follow-up wide.
The away side tried their best to manage the closing stages. Mitchell and Andersen were among those to require long spells of treatment and, in the end, it cost them the win.
Six minutes were added on after the 90 and Brentford needed every second to find their equaliser.
Mbeumo beat his man and delivered a peach of a cross to the back post and Janelt rose highest to power past Guaita from eight yards.
Once the celebrations died down there was barely time for Palace to take the kick-off before Paul Tierney’s whistle brought an end to proceedings, as Brentford’s unbeaten run survived another tough test.
The Bees have now gone 11 Premier League games without defeat.
Frank: We need to cherish these moments
Thomas Frank was pleased with Brentford’s fightback against Crystal Palace but expressed frustration at his side’s performance.
Janelt: Sometimes you can't describe how good that feeling is
Goalscorer Vitaly Janelt admitted he was 'a bit in doubt' about connecting with Bryan Mbeumo's cross for his goal, knowing that Brentford top scorer Ivan Toney was lurking behind him in the box.