For the Robins, a 1-0 defeat meant nine games without a win – and four straight defeats since the season’s resumption last month – and the result almost certainly ended already flickering play-off hopes.
And it proved to be enough for the club to move on from Johnson.
In a statement released within 90 minutes of full-time, chief executive Mark Ashton said the board believed “that a change of management is needed now for Bristol City”.
The visitors had the better of a poor quality first half, getting their front men into the game more than the Robins.
But it was the hosts who launched the first meaningful attack after five minutes when a Nahki Wells header and a follow-up shot from Kalas were blocked.
A Joe Ralls corner in the 21st minute caused havoc in the hosts’ goalmouth before the ball was cleared and it was Cardiff looking the more threatening side.
Their best first half chance fell to Ralls after 37 minutes, but his low shot was blocked.
There was a moment of anxiety for Cardiff at the start of second half when goalkeeper Smithies had his attempted clearance charged down by Wells, but the ball bounced across the goal rather than into it.
Home keeper Bentley had to make the first meaningful save after 53 minutes, tipping a Vaulks shot over the crossbar after good work by Hoilett.
Benkovic should have put Bristol City ahead with nine minutes left, rising to meet Jamie Paterson’s corner but putting his header wide.
Neither side wanted to settle for a point and the game became wide open.
After Ward’s goal broke the deadlock, the hosts threw even more men forward.
There were chances at both ends, but Cardiff held on to clinch a massive third straight away win.