Goals from Marlon Pack and Kieran Agard gave the Robins a two goal lead at half time. Shaun Miller pulled a goal back for the Sky Blues, but substitute Scott Wagstaff scored late on to seal the win.
The City lineup featured four changes from the team that started last weekend at Crewe, with Andy Webster, Mohamed Coulibaly, Jordan Clarke and Adam Barton all coming into the side, Barton receiving his first start of the season. They replaced John Fleck, Seb Hines, Conor Thomas and the suspended Jack Finch respectively.
The opening few minutes was positive for the Sky Blues. Coulibaly saw plenty of the ball early on, as he looked to attack the Robins' back line. After three minutes he had a 20-yard effort that was just blocked at the crucial moment.
The game was open, with some slick passing from both sets of players. Jim O'Brien nearly unlocked the Bristol City defence on seven minutes when he curled in a delicious low cross. Frankie Fielding dived in and just reached the ball before Josh McQuoid could tuck it away.
After ten minutes the deadlock was broken by the Robins, and it was Pack who got on the scoresheet. The ball broke to him on the edge of the area and he struck a sweet low drive into the bottom left corner, giving Ryan Allsop no chance.
City reacted quickly in an effort to silence the sizeable away support, pressing forwards in search of an equaliser. They were nearly caught on the break by Agard, but Clarke made a fantastic challenge to deny the winger a one-on-one opportunity.
The Sky Blues were enjoying possession in the visitor's half, but could not find the decisive killer pass. The Robins were looking to attack on the break, but the defensive duo of Clarke and Webster were keeping them at bay.
Chances were becoming increasingly rare as the half progressed, as the Reds looked to protect their early goal. Luke Freeman had a shot on the half hour mark, but it was comfortably saved by Allsop.
Bristol City had scored more goals than anyone in the league, and the Sky Blues' defence started to become sternly tested as the league leaders started to go up a gear. Wade Elliott got himself free to steer a volley towards goal following a high cross, but luckily the effort was blocked by his own team mate.
An early change was enforced on manager Steven Pressley when Danny Pugh had to come off due to an injury with six minutes of the first half remaining. Ryan Haynes came on in a like for like change.
The away side continue to push for a second goal, and they got it on the stroke of half time. A long punt forward from Fielding was flicked on. Agard sensed an opportunity and bustled past two Sky Blue defenders to poke the ball past the on-rushing Allsop and into the net.
It was a frustrating time to concede for City and would have changed Steven Pressley's team talk considerably as the half time whistle sounded.
One change was made by City at the break, James Maddison replacing Coulibaly, as the Sky Blues looked for an immediate way back into the game.
The first 15 minutes saw little in the way of goalmouth action, with the Reds resorting to attacking on the break, allowing City to come forward.
On the hour Josh McQuoid made way for Shaun Miller as the Sky Blues made their final substitution.
City went agonisingly close to pulling a goal back on 67 minutes. Simeon Jackson did brilliantly to fire a ball across goal before it went out of play. Haynes stooped low, but his header hit the turf and bounced just over the crossbar.
With 20 minutes to go Maddison managed to direct a header across goal, Fielding scrambled across his goal line and clawed the ball away, the youngster desperately unlucky not to score his first senior goal for City.
The Sky Blues got one back with a quarter of an hour to go. Maddison played an excellent through ball to Miller, and the substitute took one touch before thumping the ball past Fielding to score his first league goal of the season.
The Ricoh Arena was rocking as the Sky Blue Army were in full voice, and City had their tails up. Haynes was continuing to venture down the left flank, looking to put a ball in, as the visitors suddenly looked shaky at the back.
The Robins were holding steady as City streamed forward. Three minutes of additional time was added by the fourth official, and the visitors made all three points safe with a classic counter attack goal at the death.
City were caught short at the back as Emmanuel-Thomas came forward. He squared it to Wagstaff, who fired high into the corner.
The final scoreline was slightly flattering towards the visitors after the Sky Blues' second half fightback, but the Robins extended their lead at the top of League One. Next up for City is a trip to Boundary Park to face Oldham Athletic in three days time.
Attendance: 11,888 (3794 Away)
Coventry City: Allsop, Willis, Pugh (Haynes 38'), Webster ©, McQuoid (Miller 60'), O'Brien, Jackson, Coulibaly (Maddison 45'), Barton, Phillips, Clarke
Subs: Burge (GK), Thomas, Daniels, Tudgay
Bristol City: Fielding, Little, Williams, Flint, Elliott ©, Freeman (Wagstaff 90'), Wilbraham (, Agard (Emmanuel-Thomas 86'), Pack, Ayling, Bryan
Subs: Richards (GK), Osborne, El-Abd, Cunningham, Burns