The hosts opened the scoring in the sixth minute, Krisnan Inu taking Richie Myler’s flat pass for a try. Luke Walsh converted.
Rovers hit back – after Benjamin Garcia was sin-binned – with a Sam Brooks try, converted by Kyran Johnson.
Walsh edged the Catalans back in front with a penalty and tries from Brayden Wiliame and Garcia.
However, the visitors refused to go away and were rewarded with a Anthony Thackeray try.Johnson added the conversion to trim the deficit to six points at half-time.
In an ill-tempered four minutes, three players were sent to the sin-bin. Louis Anderson and Luke Briscoe went for fighting, while Keal Carlile was sent from the field for 10 minutes shortly after for a late tackle on Walsh – a penalty Inu elected to kick at goal, successfully.
Catalans used the numerical advantage, Walsh sending Sam Moa over, Inu converting.
Duffy said: “We came here with a young team and some guys who hadn’t played for a long time and I thought they were outstanding.
“We could have been a bit smarter in certain areas, but overall I’m very proud of them.
“We went down to 11 men at one point and they didn’t get over the line, so I’m really proud of the guys – but we need a win.”
Catalans Dragons: Tierney, Duport, Inu, Wiliame, Yaha, Walsh, Myler, Moa, Da Costa, Casty, Anderson, Horo, Garcia. Substitutes: Bousquet, Baitieri, Albert, Margalet.
Featherstone: Johnson, Briscoe, Hardcastle, Taulapapa, Turner, Thackeray, Wildie, Brooks, Carlile, Mariano, Farrell, Davies, Lockwood. Substitutes: Tagg, Cooper, Walters, Igbinedion.
Referee: L Moore (RFL).