Nottingham Forest goalkeeper Lee Camp saved Michael McIndoe's injury-time penalty to deny Bristol City victory in an entertaining game at Ashton Gate.
Joe Garner converted Nathan Tyson's cross to put the visitors in front.
Marvin Elliot powered in from distance to equalise, but after the break Forest restored their lead as Tyson coolly slotted past Adriano Basso.
The hosts drew level again with Liam Fontaine firing through a crowd, before McIndoe's dramatic late penalty miss.
Bristol City boss Gary Johnson: "Michael's distraught but I never allow players to take another penalty after they have missed twice in succession. It's just too much pressure, so we will be making a change.
"I am gutted for our supporters because they were magnificent today. It feels more like a defeat than a draw. But we win and lose as a team and no one will be on Michael's back. He is more distraught than the rest of us."
Forest boss Colin Calderwood: "It would have been a total injustice had City scored from the late penalty. We controlled most of the game and I don't consider even a draw a fair result.
"Both sides went for it in the final minutes and the result could have gone either way. Nathan Tyson was always a threat for us. We have a young and developing side who are getting better all the time."
Bristol City: Basso, Orr, McCombe (Skuse 46), Fontaine, Brian Wilson, Williams (John 57), Elliott, Johnson, McIndoe, Noble (Maynard 71), Adebola. Subs Not Used: Weale, Sproule.
Bookmark with:
What are these?