This was the first Super League meeting in 12 years for the two sides, who contested the competition’s Grand Final in 1999 and 2002, and proved to be a gripping struggle.
Wright’s third try of the season put Saints in front early on but the visitors responded brilliantly to lead by the break.
A perfect grubber kick from Luke Hooley set up Ethan Ryan to level the scores up, and Hooley then kicked his side in front after David Klemmer was sent to the sin bin in his 300th career appearance.
The Bulls made the extra man count, and went over again through Connor Wynne to stretch the lead to six.
At the other end, Esan Marsters produced an excellent last-ditch tackle to stop the hosts levelling things up.
A wonderful breakaway score from Wynne gave the Bulls a 12-point lead shortly after the restart, before the St Helens fightback started.
Tries in quick succession from Sironen and Sailor – the former confirmed following a review – brought the hosts back level and when Peposhi was sent off moments later it looked as though there would only be one winner.
Feldt’s score certainly suggested it would be one-way traffic, only for the Bulls to take advantage of a Saints sin-binning – this time for Joe Shorrock – and go in front once more through Andy Ackers.
The Bradford backline stood strong for nearly 10 minutes, including forcing the ball out of play with St Helens looking certain to score in the corner thanks to the work of five defenders.
Cross, however, slipped through in the closing stages to secure the win, and extend the Bulls’ wait for an away success at Saints to 17 years.