With the sides locked at 7-7, Rovers centre Jason Walton scored a crucial 68th-minute try against his former club.
Rovers had the best first-half chances and should have been further ahead than 6-0 at the break.
The only first-half points came in the fifth minute when Bradford’s Jonny Campbell dropped the ball and Josh Hardcastle pounced for a touchdown that Kyle Briggs goaled.
Rovers hooker Sam Day was held up over the line and was denied again when the referee ruled he had dropped the ball over the line.
Bradford levelled the scores when Evan Hodgson crossed on his debut and Joe Keyes converted.
Rovers regained the lead when Briggs kicked a drop goal but Keyes made it 7-7 when he landed a one-pointer.
Walton’s try put Featherstone back in front and Briggs defied the swliring wind and rain to add the conversion. He was on target again with a 45-yard penalty goal to stretch the lead to 17-7.
Ian Hardman finished a break by Mariano to put the game beyond Bradford’s reach, with Briggs adding the extras. Campbell grabbed a late consolation try for Bradford and Keyes converted.
Bradford Bulls: Campbell; Macani, Mendeika, Oakes, Ryan; Pryce, Keyes; Magrin, Lumb, Peltier, Wilkinson, Bentley, Halafihi. Substitutes: Moore, Kirk, Butterworth, Hodgson.
Featherstone Rovers: Hardman; Turner, Walton, Ulugia, Duckworth; Briggs, Wildie; Cooper, Davies, Bostock, Mariano, Hardcastle, Lockwood. Substitutes: Griffin, Day, Tagg, Moore.
Referee: C Straw (RFL).