Hull: (12) 22
Tries: Swain, Briscoe, Yeaman, Tony
Goals: Cooke (3)
Bradford: (10) 32
Tries: Evans (2), Newton, B Harris, Vagana, Lynch
Goals: Deacon (4)
Bradford returned to the top of Super League with a thrilling win over Hull. Tries from Richard Swain and Shaun Briscoe gave the home side a dream start, but the Bulls hit back through James Evans and Terry Newton.
Kirk Yeaman grabbed a controversial third Hull try but Ben Harris and Joe Vagana scored to put the Bulls on top.
As tiredness set in, Danny Washbrook set up Motu Tony for Hull, but Paul Cooke's knock-on allowed Evans to score before Andy Lynch sealed victory.
Yeaman set up the first as he sprinted down the left wing before cutting in to find the unmarked Swain in the centre to touch down.
Briscoe doubled the lead when he went over in the corner, latching onto Cooke's kick through after Nathan McEvoy misjudged the bounce.
There was scarcely a pause for breath in the first 30 minutes and, having endured the early storm, Bradford pulled back a try when David Solomona set up Evans.
Miraculously, almost straight from the restart, Hull's defence fell away from the charging Iestyn Harris, who set up Newton to score between the posts.
Solomona was sin-binned right on half-time and, with the Bulls a man down, Yeaman struck.
But Harris and Vagana hit back as the intensity of the game stayed as high as ever.
Tony's try looked to have set up a close finale but further tries by Evans and Lynch made sure of victory.
Hull FC coach Peter Sharp: "We probably weren't good enough on the night.
"They ran a bit harder than us and tackled a bit harder than us, and there lies the game. But they tried hard."
Bradford coach Steve McNamara: "To come to a place like Hull and perform the way we did, I take my hat off to the players.
"We started off with a few mistakes and those have killed us before, but we've learned from it. It's nice to be top.
"We've picked up a few injuries so to come here and achieve that, we're happy."
Hull: Briscoe, Sing, Domic, Yeaman, Raynor, Cooke, R. Horne, Dowes, Swain, King, Tickle, Radford, Washbrook.
Replacements: Tony, G. Horne, Carvell, Maiava.
Bradford: Platt, McAvoy, B. Harris, Evans, Halley, I. Harris, Deacon, Burgess, Newton, Lynch, McKenna, Solomona, Langley.
Replacements: Cook, Henderson, Kopczak, Vagana.
Referee: Ben Thaler (Wakefield).