Kasey Palmer had opened the scoring for City but Boro took the lead before the hosts earned a point late on.
Tommy Rowe rescued a point for Bristol City with a late equaliser in a 2-2 Championship draw with Middlesbrough at Ashton Gate.
The hosts took the lead a minute from the end of a thrilling first half when Niclas Eliasson's cross from the left was met with a firm downward header from Kasey Palmer, who netted from just outside the six-yard box.
Boro equalised in the 64th minute, with Paddy McNair crossing low and hard from the right and City centre-back Taylor Moore diverting the ball into his own net from eight yards.
Four minutes later the visitors were in front as Britt Assombalonga broke clear through the middle and coolly drilled a low left-footed shot past Dan Bentley.
But back came City and substitute Callum O'Dowda crossed from the left in the 81st minute for the unmarked Rowe to net with a stooping header from 10 yards.
Both sides hit the woodwork in a frantic opening half hour that saw some desperate defending at each end.
In the 13th minute, Boro's Ashley Fletcher shot against a post from McNair's low cross and nine minutes later Nathan Baker sent a glancing header against an upright from Eliasson's centre.
It was end-to-end stuff from the opening minutes, which saw City goalkeeper Bentley dive to his left to palm away Fletcher's 25-yard shot.
McNair had a shot blocked and headed wide of the near post from a Marvin Johnson corner as Boro signalled their attacking intentions.
Andreas Weimann volleyed over for City and Benik Afobe forced a fine 35th-minute save from Darren Randolph as a hugely open game had both sets of supporters on the edge of their seats.
Bentley tipped an Assombalonga shot around a post in the 36th minute and the only surprise was that the game remained goalless for so long before Palmer's strike.
Soon the second half was following a similar pattern as Bentley dived to save McNair's low drive from distance and at the other end Randolph blocked Afobe's close range effort.
Moore's own goal set City back and Lee Johnson made a double change, sending on O'Dowda and Pedro Pereira for the impressive Palmer and Jack Hunt.
Assombalonga's goal followed almost immediately, but O'Dowda repaid his head coach's faith with the assist for Rowe's equaliser.
Lewis Wing shot inches wide for Boro as both teams went for a winner. And in stoppage time Bentley did well to smother a shot from Ryan Shotton.