text: Sam Gallagher's powerful header back across goal ensured Rovers, who remain in the relegation zone, are still two points from safety with three to play.
  Tammy Abraham's 22nd goal of the season, an exquisite finish past David Raya, had earlier put City in front.
  Abraham, Matty Taylor and Josh Brownhill all wasted chances to make it 2-0 before Rovers rescued a point.
  On-loan Chelsea striker Abraham, 19, was arguably most guilty, shooting straight at the goalkeeper when through on goal as the Robins created a host of great opportunities prior to Gallagher's equaliser.
  Bristol City remain four points above the relegation zone, with fixtures against Barnsley, Brighton and Birmingham remaining.
  They could have all but sealed their Championship survival during a dominant first 70 minutes at Ewood Park, but were unable to hold on for a third successive win.
  Blackburn face Wolves, Aston Villa and Brentford in their final three matches of the season.
  Blackburn manager Tony Mowbray:
  "The frustration was the goal we let in really. We ultimately tried to play offside and it was a really sloppy decision from us.
  "And yet the story of the game was the changes we made, the way the team clawed their way back into the game and then, for us, ultimately a penalty decision that wasn't given, that having watched it back looks a clear penalty kick.
  "In an ideal world it would have been a day where we didn't play particularly well, but came away with three points. Ultimately we've come away with one. On a day that (Nottingham) Forest lost and Birmingham lost, it's a point we have to put in the bag."
  Bristol City boss Lee Johnson:
  "I thought it was outstanding, our performance today. My only criticism really is we should have put it to bed. We have to make sure we're more clinical with our chances because we created numerous ones.
  "I thought the goal was outstanding, I think it was 31 passes that led to the goal, so my analyst tells me. It shows that we have a bright young side that has to do a job this year and then we can kick on."
  Match ends, Blackburn Rovers 1, Bristol City 1.
  Second Half ends, Blackburn Rovers 1, Bristol City 1.
  Delay over. They are ready to continue.
  Delay in match Aaron Wilbraham (Bristol City) because of an injury.
  Attempt blocked. Hope Akpan (Blackburn Rovers) right footed shot from the centre of the box is blocked. Assisted by Connor Mahoney.
  Corner,  Bristol City. Conceded by Elliott Bennett.
  Delay over. They are ready to continue.
  Delay in match Josh Brownhill (Bristol City) because of an injury.
  David Cotterill (Bristol City) is shown the yellow card.
  Substitution, Bristol City. Aaron Wilbraham replaces Matty Taylor.
  Corner,  Blackburn Rovers. Conceded by Joe Bryan.
  Joe Bryan (Bristol City) is shown the yellow card for a bad foul.
  Connor Mahoney (Blackburn Rovers) wins a free kick in the attacking half.
  Foul by Joe Bryan (Bristol City).
  Attempt missed. Tommie Hoban (Blackburn Rovers) header from the centre of the box misses to the right. Assisted by Craig Conway with a cross following a corner.
  Corner,  Blackburn Rovers. Conceded by Josh Brownhill.
  Corner,  Blackburn Rovers. Conceded by Bailey Wright.
  Attempt saved. Sam Gallagher (Blackburn Rovers) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Lucas João.
  Attempt missed. Jason Lowe (Blackburn Rovers) right footed shot from outside the box is close, but misses to the left.
  Substitution, Bristol City. David Cotterill replaces Mark Little.
  Lucas João (Blackburn Rovers) wins a free kick in the defensive half.
  Foul by Matty Taylor (Bristol City).
  Substitution, Bristol City. Callum O'Dowda replaces Jamie Paterson.
  Attempt missed. Jamie Paterson (Bristol City) right footed shot from the left side of the box misses to the right. Assisted by Joe Bryan.
  Goal!  Blackburn Rovers 1, Bristol City 1. Sam Gallagher (Blackburn Rovers) header from the centre of the box to the bottom right corner. Assisted by Elliott Bennett.
  Attempt saved. Josh Brownhill (Bristol City) left footed shot from the centre of the box is saved in the centre of the goal. Assisted by Tammy Abraham.
  Elliott Bennett (Blackburn Rovers) wins a free kick in the defensive half.
  Foul by Joe Bryan (Bristol City).
  Offside, Blackburn Rovers. Elliott Bennett tries a through ball, but Sam Gallagher is caught offside.
  Substitution, Blackburn Rovers. Marvin Emnes replaces Elliott Ward.
  Offside, Bristol City. Jamie Paterson tries a through ball, but Aden Flint is caught offside.
  Foul by Jason Lowe (Blackburn Rovers).
  Jamie Paterson (Bristol City) wins a free kick in the attacking half.
  Lucas João (Blackburn Rovers) wins a free kick on the left wing.
  Foul by Aden Flint (Bristol City).
  Attempt blocked. Jamie Paterson (Bristol City) right footed shot from the right side of the box is blocked. Assisted by Marlon Pack.
  Attempt saved. Tammy Abraham (Bristol City) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Josh Brownhill.
  Offside, Bristol City. Aden Flint tries a through ball, but Tammy Abraham is caught offside.
  Derrick Williams (Blackburn Rovers) is shown the yellow card for a bad foul.
  Foul by Derrick Williams (Blackburn Rovers).
target: Blackburn Rovers came from behind to earn a crucial draw against fellow Championship strugglers Bristol City.