Match ends, Bristol City 2, Middlesbrough 1.
Bristol City moved up to third in the Championship as goals from Joe Bryan and Jamie Paterson gave them victory over Middlesbrough at Ashton Gate.
After an even first half, Bryan nodded in at the back post to put the hosts ahead six minutes after half-time.
Paterson doubled the lead three minute later when he met Aden Flint's cross following a swift counter-attack.
Hordur Magnusson headed into his own net to hand Boro a lifeline but the Robins held on to seal the win.
The hosts shaded an even first half, with Marlon Pack seeing an effort cleared off the line by Boro striker Britt Assombalonga and Darren Randolph saving Nathan Baker's diving header.
City's two goals came from well-worked moves and the Robins are now six points off the automatic promotion places following a run of one defeat in seven matches.
Boro rarely threatened Frank Fielding's goal but had a late spell of pressure after Iceland international Magnusson gave them hope by diverting a cross into his own net.
However, Garry Monk's side, relegated from the Premier League last season, could not find an equaliser and have now lost three of their last four games, leaving them six points off the play-offs in ninth.
Bristol City head coach Lee Johnson told BBC Radio Bristol:
"It was a great performance and an excellent result against a very, very good side. I thought we were outstanding.
"Everyone worked their socks off and its massive to go into December with a win.
"It takes us eight points clear of Middlesbrough and if you'd told me we'd be eight points clear of Middlesbrough after 20 games I would have bitten your hand off."
Middlesbrough boss Garry Monk told BBC Tees:
"I can only apologise to our travelling fans, they have spent a lot of hard-earned cash to follow the team tonight and that performance wasn't good enough at all. For me, it is unacceptable.
"We have quality in that changing room and I expect a lot more. We didn't get that tonight and we haven't had it in certain periods of this season already.
"To go 2-0 down and then show the right level of reaction, intensity and desire is too easy, it's too easy to do it when you're losing the game, you have to do that from the start of every single game.
"That's one thing we need to do from here on it otherwise we won't be able to achieve the ambitions that we have."
- 7SmithBooked at 90mins
- 3BryanBooked at 61minsSubstituted forDjuricat 74'minutes
- 20PatersonSubstituted forEliassonat 82'minutes
- 14ReidSubstituted forLekoat 89'minutes
- 22ChristieBooked at 90mins
- 6GibsonBooked at 56mins
- 2da SilvaSubstituted forBamfordat 78'minutes
- 19DowningSubstituted forJohnsonat 67'minutes
- 10BraithwaiteSubstituted forGestedeat 57'minutes
- Steve Martin
- Shots on Target
Second Half ends, Bristol City 2, Middlesbrough 1.
Korey Smith (Bristol City) is shown the yellow card for a bad foul.
Adama Traoré (Middlesbrough) wins a free kick in the attacking half.
Foul by Korey Smith (Bristol City).
Foul by Rudy Gestede (Middlesbrough).
Niclas Eliasson (Bristol City) wins a free kick in the defensive half.
Attempt blocked. Josh Brownhill (Bristol City) left footed shot from the centre of the box is blocked.
Cyrus Christie (Middlesbrough) is shown the yellow card for a bad foul.
Foul by Cyrus Christie (Middlesbrough).
Niclas Eliasson (Bristol City) wins a free kick on the left wing.
Offside, Middlesbrough. Jonny Howson tries a through ball, but Britt Assombalonga is caught offside.
Substitution, Bristol City. Jonathan Leko replaces Bobby Reid.
Adama Traoré (Middlesbrough) wins a free kick on the right wing.
Foul by Hördur Bjorgvin Magnusson (Bristol City).
Attempt saved. Josh Brownhill (Bristol City) right footed shot from the right side of the box is saved in the bottom right corner. Assisted by Milan Djuric.
Foul by Adama Traoré (Middlesbrough).
Nathan Baker (Bristol City) wins a free kick in the defensive half.
Substitution, Bristol City. Niclas Eliasson replaces Jamie Paterson.
Corner, Middlesbrough. Conceded by Nathan Baker.