First half goals from Tatsuhiro Sakamoto and Haji Wright strengthened Coventry's position at the top of the Sky Bet Championship as they won 2-0 in a match that saw both teams finish with 10 men.
The visitors took a 37th minute lead when former Robins player Jay Dasilva crossed from the left and Sakamoto outjumped his marker to net with a downward header.
Coventry's task was made more difficult when Joel Latibeaudiere was sent off in the 43rd minute for denying a clear goalscoring opportunity, pulling back Emil Riis as the forward threatened to break clear.
But in first half added time the Sky Blues doubled their advantage when Wright eluded a weak challenge from Neto Borges before beating Radek Vitek with a low right-footed drive.
The game became 10-a-side in the 56th minute when Bristol City midfielder Adam Randell was shown a second yellow card for a high challenge on Josh Eccles. From then on Coventry defended strongly to secure the points.
Sinclair Armstrong's pace caused Coventry early problems. The big striker had his first chance in the opening minute when volleying wide from outside the box.
Armstrong did better in the 12th minute, sending a shot from 20 yards narrowly wide. And he was involved again 10 minutes later when Coventry goalkeeper Carl Rushworth dived bravely at his feet.
Jason Knight fired over from distance and it was not until the 33rd minute that the visitors threatened, Ephron Mason-Clark having a shot from a narrow angle palmed around his near post by Vitek.
Borges headed over a great chance to equalise after Latibeaudiere's dismissal, which saw Coventry boss Frank Lampard react by sending on Liam Kitching for Mason-Clark. Wright's goal was the final action of the first half.
Both sides made changes for the start of the second period, The hosts sent on Scott Twine for Cam Pring, with the Sky Blues replacing Sakamoto with Jake Bidwell. Twine soon tested Rushworth, who palmed his shot for a corner.
Gerhard Struber's team started to dominate possession. Substitute Max Bird forced a diving save from Rushworth with 20 minutes remaining and seconds later the goalkeeper was in action again to hold George Tanner's effort from distance.
The game was held up for several minutes while stewards dealt with what appeared a medical situation behind the Coventry goal. On the resumption, Twine's free-kick from 25 yards brought another Rushworth save.
At the other end Coventry substitute Ellis Simms had a low shot saved by the diving Vitek and Dasilva wasted a good chance by shooting wide.
The Bristol City goalkeeper then kept out late efforts from Brandon Thomas-Asante and Simms before the impressive Rushworth produced the best save of the match to deny Twine.