Connor Dwyer was on the scoresheet as Swinton beat Keighley to condemn the below-par Cougars to their first defeat of the League One season.
The visitors took the lead in the sixth minute with a James Feather try, but Swinton hit back with tries from Dwyer, Chris Rothwell and Mike Butt giving them a 12-6 lead at half time.
Ben White’s drop goal and a 49th-minute try from Shaun Robinson saw the hosts extend their advantage, before an Oliver Pursglove try gave Keighley hope.
But any hopes of a comeback were dashed when Swinton went over twice more, either side of Paul Handforth’s 71st-minute try.
Cougars player-coach Paul March refused to attribute his side’s below-par performance to the recent trauma surrounding the club following the death of Danny Jones. The hugely popular playmaker passed away after suffering a cardiac arrest two weeks earlier.
The result ended Cougars’ five-match winning streak in the league but March conceded his men were simply second best.
He said: “I’m not going to let the events of the past fortnight be an excuse for the defeat today.
“Swinton were the better side throughout and deserved the win. The lads were very slow and lacklustre through the warm-up and they took that mentality into the game itself.
“It’s been a difficult time for the lads andI’m going to give them some time off to spend with their families this coming week and we’ll go from there.”
Swinton Lions: Hawkyard, Robinson, Littler, Rothwell, Butt, White, Lloyd, James, Ackers, Austin, Barlow, Dwyer, Lever. Substitutes: Govin, Morrison, Hawkyard, Ball
Keighley Cougars: Jesse Sheriffe, Gabriel, Barnes, Lawton, White, P March, Handforth, Law, Feather, Rawlins, Lynam, Pursglove, Lindsay. Substitutes: Peltier, Cherryholme, Bailey, Kelly.
Referee: J Roberts (RFL).