Featherstone Rovers stayed on course for a home clash in the Championship Shield final but were made to work hard by a tenacious Rochdale Hornets outfit.
The lead changed hands on four occasions before two Harry Newman tries proved the difference at the Crown Oil Arena.
It was the Hornets who scored the first points of the afternoon after they had withstood some early pressure from Rovers.
Ben Moore measured a grubber kick in behind the Featherstone line and Lee Mitchell was first to it as he gathered the ball and slid over the try line.
Tyler Whittaker added the extras before he converted a penalty goal a few moments later to give the Hornets an eight-point lead.
The hosts continued to mount the pressure on Rovers but the away side were to get back into the contest with a superb try.
On a free play, the ball found its way to Harry Newman who broke down the line before offloading brilliantly for Anthony Thackeray to stride clear and score.
Moments later Rovers were in front when a short ball sent John Davies storming through a gap and over the whitewash.
On the stroke of half time, Rochdale went back ahead through Rob Massam's try.
The Hornets winger made a dart for the line and twisted out of the tackle to plant the ball down in the corner.
Things went from bad to worse for Featherstone at the start of the second half as Massam grounded following a high kick from Danny Yates.
After a nervy start, Newman showed his class once again as he broke from deep inside his own half and raced away to slide over in the corner.
Five minutes later Newman put Rovers back in front when Featherstone outnumbered Rochdale on the left-hand side.
Hardman kicked a penalty goal with 10 minutes remaining to stretch Rovers' lead to six points before a drop-goal from Thackeray took the advantage to seven.
Rochdale responded immediately as Setareki Talatoka raced onto a kick in behind and planted the ball down but it proved to a mere consolation as Davies crashed over soon after to seal it for Rovers.
Rovers: Hardman, Whylie, Taulapapa, Newman, Robinson, Thackeray, Wildie, Cooper, Maskill, Brooks, Davies, Hardcastle, Walton. Subs: Lockwood, Knowles, Farrell, Carlile.
Hornets: Lepori, Greenwood, Talatoka, Cross, Massam, Whittaker, Yates, Taira, Moores, Moran, Adamson, Mitchell, Hatton. Subs: Brickhill, Millington, Ryan.
Referee: Nick Bennett