The Saints looked the better side from the off and hit the post in the ninth minute, Jason Puncheon's in swinging delivery evading everyone and cannoning off the woodwork.
That woke QPR up and they had a couple of shots from Adel Taarabt and Junior Hoilett saved by Paulo Gazzaniga but went behind in the 23rd minute. Puncheon's shot from close range was blocked on the line but Rickie Lambert threw himself bravely at the ball and headed home from a yard out.
The visitors looked hungrier for the win and doubled their lead right on the stroke of half-time, Puncheon curling a stunning low drive past Julio Cesar from the edge of the area.
Hughes left the field at half-time with a face like thunder to a chorus of boos, the Saints fully deserving their lead at the break.
QPR grabbed a lifeline minutes after the restart, Hoilett heading home from Taarabt's cross. The game fizzed from end to end but Southampton gradually gained control once more, Puncheon forcing a fingertip save from Cesar and Maya Yoshida having an effort cleared off the line.
The Saints got their third in the 83rd minute, capitalising on some woeful defending from Rangers. Lallana delivered a low cross which Ferdinand diverted into his own net to end his side's hopes of taking anything from the match.
The defeat leaves Rangers rooted to the bottom of the table, four points adrift of the Saints.