© PA Photos
The visitors began confidently and had a pair of openings in the first 10 minutes.
Taarabt forced Paulo Gazzaniga into a save from a tight angle before the Argentinian keeper almost let Hoilett's effort through, but the ball dribbled just wide.
The Saints took the lead midway through the half when Lambert bravely threw his head in to nod home his first goal in seven games.
It was two just before the interval when Puncheon curled into the corner from just outside the area.
QPR will have to net three goals in the second half if they are to pick up their first Premier League win of the season.