Championship favourites Leicester City were booed off after two goals from Nicky Maynard consigned them to their second successive shock defeat at home.
Maynard gave the Robins the lead after five minutes, drilling home a free kick, before missing a penalty.
David Nugent equalised with a spectacular 25-yard right-foot strike.
Maynard scored the winner on 66 minutes, stealing the ball from Sean St Ledger on the halfway line and racing clear to beat keeper Kasper Schmeichel.
The striker has been one of Sven-Goran Eriksson's main transfer targets this summer, with the Foxes having three bids for him rejected.
“We have to lift the players and ourselves because we can't go on losing games”
Leicester's manager now concedes that Maynard is unlikely to move to the King Power Stadium.
"I am not sure that the player wants to come or the club wants to sell so it is very difficult," he said.
The Swede also insisted he could take positives from the defeat. "It was very bad to lose the second time in a few days at home," Eriksson added.
"But at least we played better football today. I think we played well enough and created chances to not lose.
"If we give them a gift then it becomes very difficult so I can't say that I am happy but I felt, quality-wise, we were at least better than Saturday.
"We have to lift the players and ourselves because we can't go on losing games. We all know the ambitions we have."
Leicester could have been three down before half time. In the 25th minute Albert Adomah's low drive across goal was deflected past the post.
Then in first-half added time Gelson Fernandes bundled over Jamal Campbell-Ryce, but Maynard hit the resulting penalty against the woodwork.
The Foxes came back out with a renewed purpose and, after Dean Gerken did well to claw away Andy King's header, their pressure was rewarded with an equaliser.
Paul Gallagher won the ball back for the Foxes, prodding to Nugent. The former Portsmouth striker scored his first goal for the club with a 25-yard strike that went through the hands of City keeper Gerken and into the bottom corner.
They should have been ahead with their next attack but Gallagher dragged his effort wide. Despite being on top, Leicester caused their own downfall when St Ledger hesitated in possession.
Maynard pounced before speeding away to restore Bristol City's lead with an assured finish from the edge of the area, and the shellshocked hosts had little in the way of a response.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.