St Helens had double reason for celebration with a victory and the successful return by their captain, Paul Sculthorpe, in his first game since last June.
Sculthorpe, back from a career-threatening Achilles problem, came off the bench to play an hour as a depleted pack held off Bradford's second-half charge.
It was mixed news for Saints and their injury-hit pack in the opening minutes. No sooner had Nick Fozzard limped off in obvious pain with a leg problem than James Graham was forcing his way over from close range to give the visitors the lead.
Bradford must have felt the fates were against them when two decisions from the officials were responsible for putting them 10 points behind. First, Shontayne Hape was harshly penalised for obstruction and then a clear forward pass from Matt Gidley was ignored as Ade Gardner went over to touchdown.
Sculthorpe was on the field by the time Saints scored their second. Soon after, James Evans allowed Sean Long's kick to run under his foot and into touch to concede possession and Lee Gilmour found the incisive angle to run onto Leon Pryce's pass to expose Bradford's defence again.
The home side's need for points to get them into the match was becoming desperate, but their best chance so far vanished when Simon Finnigan lost the ball in Sculthorpe's tackle on the try-line.
Sam Burgess helped his team with a crunching tackle on Gareth Frodsham that saw the young forward helped from the field. Saints still seemed slightly distracted by the desire for retribution when Paul Sykes' pass put Evans over in the corner for the Bulls' first points.
Bradford carried that momentum into the second half with a quick try from Sykes to bring them back to within one score.
Saints had to stand up to concerted pressure but managed to stretch their lead with a Long penalty goal when Mike Platt was sent to the sin-bin for slowing down the play-the-ball.
Long's influence was apparent again with a searching kick that drew a mistake from Hape. Saints took advantage clinically with Keiron Cunningham driving over from dummy-half.
Sykes' second try came too late to change the outcome, although Bradford were throwing the ball around in a frantic search for an equaliser until the end.
Bradford: Platt; Evans, Sykes, Nero, Hape; Harris, Deacon; Vagana, Newton, Lynch, Langley, Morrison, Burgess. Substitutes used: Halley, Godwin, Finnigan, James.
St Helens: Wellens; Gardner, Gidley, Talau, Meli; Pryce, Long; Fozzard, Cunningham, Graham, Gilmour, Clough, Bennett. Substitutes used: Hargreaves, Sculthorpe, Frodsham, Roby.
Referee: P Bentham (Warrington).Reuse content