Match ends, Derby County 1, Bristol City 2.
Andreas Weimann scored against his former club Derby County as Bristol City secured back-to-back wins with victory at Pride Park.
The Robins, who are now unbeaten in three matches, went ahead when ex-Rams striker Weimann cleverly turned goalkeeper Kelle Roos before slotting into an empty net.
They doubled their lead before the break, with Weimann again involved, dummying Jack Hunt's low cross to allow Josh Brownhill to sweep home.
Despite bossing possession in the second half Derby failed to create a really clear opening, although Jack Marriott's brilliant individual curling effort with five minutes left set up a grandstand finish.
But City were able to weather a late storm to secure their first away win of the season and condemn Phillip Cocu to his first loss as Rams manager.
The former Netherlands midfielder will be frustrated his side were unable to capitalise on their dominance with the ball, with just four shots on target after mustering 18 attempts on goal.
Tom Lawrence missed arguably their best chance when the score was 1-0, denied by goalkeeper Daniel Bentley when he looked certain to tap in at the far post.
By contrast, the visitors were clinical in establishing their two-goal lead and looked a completely different proposition to the side beaten 3-1 by Leeds United on the opening weekend.
Head coach Lee Johnson has spoken openly about the club's top-six aspirations, promising a "bold" summer transfer window in May and eventually going on to sign 12 new players.
While they rarely threatened to add to their two goals at Pride Park, a professional and organised defensive display allowed them to see the game out and seal a second successive victory.
Derby County manager Phillip Cocu:
"It was a costly start to the game.
"It was a bad start. I don't like excuses and I don't know why, because it was a full stadium, great atmosphere, fantastic pitch and after we concede a goal then I see a reaction.
"But I want to see this not as a reaction but from the start, in the same way with attitude, aggressiveness and pressing. Also, we couldn't convert our chances, so you are chasing your opponent all the time.
"The second half was much better in the way we presented ourselves and we got back in the game and we were close to getting an equaliser, but we didn't have the luck."
Bristol City head coach Lee Johnson told BBC Radio Bristol:
"I was delighted with the team today, I thought we still controlled the game even thought we didn't have the ball.
"(It was) always going to be a tough game, but really pleased with the players. It's a new group and we have learnt a lot of positives again about the team tonight.
"It's difficult to single out one player because I thought the whole unit from front to back, the defensive performance, was outstanding.
"There's still bits to improve on but everybody has got the rewards today by the shift that they put in."
- 16ClarkeSubstituted forKnightat 80'minutes
- 46MaloneSubstituted forJozefzoonat 45'minutes
- 44HuddlestoneBooked at 79mins
- 20BennettSubstituted forMarriottat 68'minutes
- 8DowellBooked at 81mins
- 2HuntSubstituted forLopes Pereiraat 82'minutes
- 8BrownhillBooked at 75mins
- 45PalmerSubstituted forO'Dowdaat 60'minutes
- 40AfobeSubstituted forDiédhiouat 70'minutes
- 32Lopes Pereira
- Steve Martin
- Shots on Target
Second Half ends, Derby County 1, Bristol City 2.
Foul by Krystian Bielik (Derby County).
Taylor Moore (Bristol City) wins a free kick in the defensive half.
Corner, Derby County. Conceded by Daniel Bentley.
Attempt saved. Max Lowe (Derby County) left footed shot from the centre of the box is saved in the bottom right corner. Assisted by Jason Knight.
Jason Knight (Derby County) wins a free kick in the attacking half.
Foul by Andreas Weimann (Bristol City).
Corner, Derby County. Conceded by Nathan Baker.
Attempt blocked. Jack Marriott (Derby County) right footed shot from the right side of the box is blocked. Assisted by Richard Keogh.
Hand ball by Famara Diédhiou (Bristol City).
Foul by Jack Marriott (Derby County).
Andreas Weimann (Bristol City) wins a free kick in the defensive half.
Goal! Derby County 1, Bristol City 2. Jack Marriott (Derby County) left footed shot from the right side of the box to the top left corner. Assisted by Florian Jozefzoon.
Florian Jozefzoon (Derby County) wins a free kick in the defensive half.
Foul by Famara Diédhiou (Bristol City).
Substitution, Bristol City. Pedro Pereira replaces Jack Hunt.
Kieran Dowell (Derby County) is shown the yellow card for a bad foul.
Foul by Kieran Dowell (Derby County).
Andreas Weimann (Bristol City) wins a free kick on the left wing.