Match ends, Blackburn Rovers 2, Bristol City 2.
Blackburn Rovers and Bristol City secured Championship safety after an entertaining draw at Ewood Park.
On-loan Sunderland striker Danny Graham gave Rovers the lead with a first-time shot before City substitute Jonathan Kodjia levelled.
Aaron Wilbraham then fired the visitors ahead from eight yards only for Graham to equalise with a header.
City finished with 10 men after Korey Smith was dismissed for an off-the-ball incident.
Blackburn are 18th in the table with 49 points from 44 games - the same number of points as City, who have an inferior goal difference and are 20th.
Both clubs will compete in the Championship next season as 22nd-placed MK Dons joined Charlton and Bolton in being relegated to League One.
Graham has now scored six goals in 16 games since joining Blackburn.
Bristol City manager Lee Johnson:
"We started quite well, first 15 minutes, camped them in and had a couple of chances, and then I thought they really got a foothold in the game and we got a bit stretched.
"At half-time there had to be a hair-dryer or two because it was important we livened them up. They had to dig deep and they did.
"I think as a club it's a big achievement given the situation we were in. On a personal level, probably my biggest achievement I think, with the help of the group obviously. I'm not saying it's all me. That's a shared achievement because the Championship is a tough league. We've picked up seven or eight wins and important points. It's a big day and we've got to enjoy it."
Blackburn Rovers manager Paul Lambert:
"Danny's two goals were great for us and he's been excellent for us since he's been at the football club. It's very difficult for loan players when they come in and you're getting towards the tail end of the season. It's easy for them to switch off, but he has been excellent.
"His work rate, around the place, off the field, all the things you want from an experienced player, he's been there, seen it, done it, and he's been a massive player for us.
"I thought in the first half we were excellent. Some of the football was very good and we should have been a couple of goals up. There was the spell in the second half where Bristol got two goals against us and I thought the defending was really poor at that point.
"I think it would have been an injustice had we lost that game."
- 28MahoneySubstituted forConwayat 63'minutes
- 29EvansSubstituted forLenihanat 86'minutes
- 14Gomez Garcia-PencheSubstituted forJacksonat 76'minutes
- 26MatthewsSubstituted forAylingat 56'minutes
- 4FlintSubstituted forPearceat 45'minutes
- 7SmithBooked at 86mins
- 14ReidSubstituted forKodjiaat 63'minutes
- Tim Robinson
- Shots on Target
Second Half ends, Blackburn Rovers 2, Bristol City 2.
Corner, Blackburn Rovers. Conceded by Richard O'Donnell.
Attempt saved. Ben Marshall (Blackburn Rovers) right footed shot from outside the box is saved in the bottom right corner. Assisted by Darragh Lenihan.
Foul by Hope Akpan (Blackburn Rovers).
Lee Tomlin (Bristol City) wins a free kick in the defensive half.
Attempt blocked. Ben Marshall (Blackburn Rovers) right footed shot from outside the box is blocked.
Attempt missed. Hope Akpan (Blackburn Rovers) header from the centre of the box is close, but misses to the left. Assisted by Craig Conway with a cross following a corner.
Corner, Blackburn Rovers. Conceded by Aaron Wilbraham.
Substitution, Blackburn Rovers. Darragh Lenihan replaces Corry Evans.
Korey Smith (Bristol City) is shown the red card for violent conduct.
Grant Hanley (Blackburn Rovers) wins a free kick in the defensive half.
Foul by Korey Smith (Bristol City).
Corner, Bristol City. Conceded by Grant Hanley.
Foul by Matthew Kilgallon (Blackburn Rovers).
Aaron Wilbraham (Bristol City) wins a free kick on the right wing.
Foul by Hope Akpan (Blackburn Rovers).
Lee Tomlin (Bristol City) wins a free kick in the attacking half.
Goal! Blackburn Rovers 2, Bristol City 2. Danny Graham (Blackburn Rovers) header from the centre of the box to the top left corner. Assisted by Jason Lowe with a cross.
Attempt saved. Hope Akpan (Blackburn Rovers) right footed shot from the centre of the box is saved in the centre of the goal.