Patrick Ah Van scored two late tries as Widnes fought back to beat his former club Bradford in a thrilling game.
Bulls led 18-10 at half-time through scores from Adam Sidlow, Keith Lulia and James Donaldson while Rhys Hanbury and Stephan Marsh crossed for Widnes.
Hanbury, Marsh and Ah Van (2) tries after the break earned victory, despite Michael Platt and Elliott Kear scores.
The win was the Vikings' first at Odsal since 1990 and leaves them 11th in the table, two points behind the Bulls.
Bradford, who have now lost their last four matches, began brightly and should have ended that sequence having led 18-4 early on and 28-16 with 20 minutes remaining.
They opened the scoring when Sidlow found a gap to score.
Luke Gale added the first of his four extras - before Danny Addy's superb lay-off led to Lulia crossing for their second try.
Hanbury broke through the home defence to open his side's account, but Donaldson went over for his first try of the season and Gale converted to put Bradford 18-4 ahead.
Widnes pressurised late in the first-half, with Phil Joseph going over the line but he was unable to put the ball down under heavy defence.
But they were rewarded when Marsh was put through by Kevin Brown to score and Jack Owens added the extras to leave then trailing by eight points at the interval.
Within two minutes of the restart, the gap was just two points when Hanbury got his second try, but Kear went over in the corner and Platt crossed for the hosts to make it 28-16.
However with just a quarter of the game left Hanbury created a second try for Marsh before New Zealander Ah Van came into his element, racing 80 metres down the pitch to score to bring the visitors within two points at 28-26.
And three minutes later the Kiwi crossed in the corner to hand the Vikings victory in an enthralling match, with Jack Owens kicking over his fourth goal to seal the win.
VIEW FROM THE DRESSING ROOM
Bradford coach Francis Cummins:
"To go from being so dominant to throwing the game away in the second half, I can't describe how disappointed I am.
"We gave them nearly everything they got and good luck to them - they carried on and won the game.
"We are edgy at the moment and we were trying to kill off the game.
"We tried coming up with big plays to kill the game off whereas building pressure with different kicks would probably have been better."
Widnes coach Denis Betts:
"Some of the tries he's [Ah Van] scored, he's up there with some of the best wingers in the world.
"He's a great guy to have in the team - the other boys love him and with his quality of finishing, he's always likely to score tries.
"We've shown character last three or four weeks but it's probably stood us in good stead - losing so many close games in recent weeks.
"I'm pleased for this group because they've worked really hard this week and, on the back of a draw and two losses, it would have been easy for them to have felt sorry for themselves and dropped their heads.
"We can see the light at the end of the tunnel and we've moved forward as a group in the last few weeks."
Bradford Bulls: Kearney, Kear, Purtell, Lulia, Platt, Addy, Gale, Scruton, Diskin, Sidlow, Bateman, Blythe, Donaldson.
Replacements: L'Estrange, Manuokafoa, Olbison, Evans.
Widnes Vikings: Hanbury, Owens, Marsh, Phelps, Ah Van, K. Brown, Mellor, Gerrard, Clarke, O'Carroll, Hock, Allen, Cahill.
Replacements: Joseph, Kavanagh, White, Leuluai.
Referee: R Hicks