The visitors made the definitive breakthrough when Reece Burke deflected substitute Jack Hunt’s cross into his own net after 78 minutes.
And Benik Afobe confirmed the away win just two minutes later when he squeezed Andreas Weimann’s cross into the far corner of the net.
Afobe had earlier claimed first blood for Bristol City when he scored a penalty after 41 minutes.
But Hull always looked a threat on the counter-attack and teed up an intense second half when Jarrod Bowen equalised three minutes later.
The hosts had several good chances after the interval, but Bristol City had a greater sense of composure when it mattered.
Bristol City manager Lee Johnson will be delighted, but he was nonetheless insistent his team should have had a penalty when the game was goalless.
Hull right-back Leo Lopes collided with Afobe after 19 minutes - but referee Dean Whitestone was having none of it.
That moment galvanised Hull, who came alive within a seven-minute period.
Tom Eaves was first denied by goalkeeper Daniel Bentley, after which Thomas Kalas - later to be replaced because of injury - superbly blocked Burke’s volley on the goal-line.
There was, however, always the suspicion Johnson’s team had more gears - and so it proved, as Bristol City took the lead from the penalty spot.
Kevin Stewart and Tommy Rowe crashed into one another following Han-Noah Massengo’s flighted cross from the left, with Whitestone adamant the former had committed a penalty offence.
Afobe did the rest with a powerful strike into the middle of the net.
Hull nearly conceded a second moments later when Weimann’s delivery from the right was met by a ferocious header from Famara Diedhiou.
Diedhou thought he had scored, but goalkeeper George Long tipped on to the crossbar, with the resulting deflection very nearly crossing the line.
It felt unimaginable Hull would get back into the game before half-time, but Bowen had other ideas.
Stewart was given too much space to loft the ball into the right channel, in which Bowen, in a one-on-one position with Bentley, coolly slotted the ball into the bottom-left-hand corner of the goal.
Hull went for the jugular in the second half.
Kamil Grosicki hit the outside of the left post with a skidding attempt, while Bowen should have headed home George Honeyman’s crisp, ranging cross.
But just when it looked like Hull would cut loose, Bristol City dramatically turned up the heat to secure an impressive away win.