Lewis Holtby delivered a low corner into the box from the left and Johnson arrived unmarked to bury a fierce shot from 15 yards.
Blackburn doubled their advantage after 77 minutes when City midfielder Han-Noah Massengo was caught in possession and substitute Adam Armstrong raced clear to slide a low shot past goalkeeper Dan Bentley.
It was no more than Rovers deserved, having worked tireless as a team to inflict City's second home defeat in the space of four days.
The home side initially responded well to the early goal. Famara Diedhiou's ninth-minute shot took a deflection and Blackburn goalkeeper Christian Walton did well to react and tip the ball around a post.
A minute later Ashley Williams was left holding his head as his goal-bound shot was blocked by a defender.
City head coach Lee Johnson was shown a yellow card by referee John Brooks after 21 minutes for leaving his dugout to remonstrate with Blackburn staff after their physio had raced onto the pitch to treat Sam Gallagher without being signalled to do so by the officials.
Still the home side pressed for an equaliser and it should have come in the 23rd minute when the unmarked Williams headed wide after a deflected cross from Niclas Eliasson had reached him at the far post.
Blackburn looked dangerous on the break and Bentley had to react smartly to keep out Gallagher's well-struck volley from 20 yards.
Then Johnson went close to making it 2-0 when his 37th-minute shot was well saved by Bentley.
As the teams left the pitch at half time more trouble flared between Lee Johnson and the Blackburn staff, which provoked a melee in the tunnel area.
His team went close to an equaliser after 68 minutes when Hunt's low cross from the right just eluded Diedhiou, sliding in at the far post.
By the time Armstrong made it 2-0 City were looking totally frustrated and anything but play-off contenders.
On this showing, Blackburn could be just that. They looked well-organised, confident and hugely efficient from first minute to last.