Bradford came from behind to see off St Helens in a low scoring affair.
Andrew Dixon put the Saints in front when he crossed in the corner after a quick attack before the Bulls hit back through Elliott Whitehead's try and two goals from Paul Sykes.
Jamie Foster let in the prolific Karl Pryce to extend the lead shortly after the break.
Francis Meli scored a late consolation try, Jamie Foster missing the conversion to sum up the visitors' day.
The win gave Bradford their first home success of the season, while St Helens remain outside the top eight.
Saints went in front when Dixon touched down after a breakaway by Paul Wellens.
Bulls got back into the game through Whitehead's try after Pryce had flicked on Ben Jeffries' looped kick, Foster was penalised for fouling Whitehead in the process of scoring the try leaving Sykes to kick a conversion and a penalty.
Shortly after the break Foster was at fault when he misjudged another Jeffries kick and Pryce stole in to crash over.
Foster's day went from bad to worse as he was then sin-binned for interference.
After poor handling by Tony Puletua blew any hopes of a Saints comeback with 10 minutes to go, Meli grabbed a last-ditch try that will have been scant consolation to visiting supporters.
VIEW FROM THE DRESSING ROOM
Bradford Bulls boss Mick Potter:
"I feel for them. They're having a tough run at the moment but anyone who writes St Helens off in March does so at their own peril.
"They've had average starts for quite a number of years. I think they will be there or thereabouts. I don't think getting in the eight will be a problem for them and that's all you need. If you're in the eight, you've a chance of winning it.
"It's good the fans have got something to cheer about at home. The game was probably not a spectacle but it was good for us to win."
St Helens boss Royce Simmons:
"As a team we're trying really hard but individual errors are taking the game away from us.
"There was some real good effort. I thought defensively we were very strong. They scored from two kicks, which they're very good at, and there was a 10-minute sin-binning where we defended very strongly too. But attacking-wise we didn't stay composed.
"We tended to make some errors that you don't expect, particularly individual errors that were pretty crucial to the end result. It puts a lot of pressure on you when you don't find touch from a penalty."
Bradford: Kearney; Pryce, Purtell, Lulia, Crookes; Sykes, Jeffries; Manuokafoa, Diskin, Hargreaves, Whitehead, C Walker, Bateman, Elima.
Replacements: Elima, L'Estrange, Burgess, Addy.
St Helens: Wellens; Makinson, Shenton, Meli, Foster; Gaskell, Wheeler; Laffranchi, Hohaia, Puletua, Wilkin, Dixon, Clough.
Replacements: Ashe, Perry, Flannery, Flanagan.
Sin Bin: Foster (56).
Referee: Richard Silverwood (Dewsbury).