Gardner scored Saints' second try of the night
Bradford: 16 (4)
Tries: Evans, Sykes
Goals: Deacon 2
St Helens: 22 (16)
St Helens fought off a second-half resurgence from Bradford to hold out for a hard-earned victory at Odsal.
Tries: Graham, Gardner, Gilmour, Cunningham
Goals: Long 3
Saints took the lead inside five minutes with James Graham's try before Ade Gardner touched down minutes later.
Saints took a 16-0 lead with a Lee Gilmour score but the Bulls hit back through tries from Ian Evans and Paul Sykes either side of the break.
But a Keiron Cunningham try on 68 minutes put the Saints back on top despite Sykes' late try on 77 minutes.
And there was further good news for Saints when captain Paul Sculthorpe made a successful return after spending nine months recovering from an Achilles problem.
The former Great Britain international was introduced midway through the first half with his side dominating possession.
Graham put the visitors in front after just five minutes, holding off the challenge of two defenders to touch down on the line.
However, coach Daniel Anderson was forced to make an early change when Nick Fozzard left the field with a knee injury sustained during the build-up to the try.
But the prop's absence made little difference as Saints sent a slick passing move through the backs to winger Gardner, who took advantage of a slip by Jamie Langley to touch down in the corner.
Things went from bad to worse for the home side when a mistake from Ian Evans gifted Saints a scrum inside Bradford's 20m line midway through the first half.
And the resulting set-piece saw Gilmour waltz through a vacant Bulls defence to touch down for the third try of the evening, much to the disbelief of the home crowd.
But the Bulls regained their composure and scored two tries either side of the half-time break.
Evans atoned for his earlier mistake with a score in the corner before Sykes stepped in on his right boot to beat Gardner two minutes into the second half.
The try injected a sense of urgency into the Bradford's game, but the Saints defence held firm as their opponents cranked up the pressure.
But a typically powerful Cunningham run stretched Saints' lead to 12 points on 68 minutes.
Although a late score from Sykes set up a frenetic final three minutes, the visitors managed to hold on for the victory.
Bradford coach Steve McNamara:
"We gave ourselves a mountain to climb. Going 16-0 down wasn't in the script.
"We looked to have got ourselves back in it but proceeded to throw it away a second time. Saints capitalised on the errors we made and the penalties we conceded.
"We were left chasing the game and became a bit anxious."
St Helens coach Daniel Anderson:
"You don't want to test your resolve and character so early but it does augur well for the rest of the year.
"I thought the leaders in our team - Sean Long, Leon Pryce and Keiron Cunningham - were absolutely outstanding.
"We were under the cosh for a while but our resilience and character showed up."
Bradford: Platt, Evans, Sykes, Nero, Hape, Harris, Deacon, Vagana, Newton, Lynch, Langley, Morrison, Burgess.
Replacements: Halley, Godwin, Finnigan, James.
St Helens: Wellens, Gardner, Gidley, Talau, Meli, Pryce, Long, Fozzard, Cunningham, Graham, Gilmour, Clough, Bennett.
Replacements: Hargreaves, Sculthorpe, Frodsham, Roby.
Referee: P Bentham (Warrington)