The Royals pipped Saints to the Championship crown last term, but the hosts exacted some revenge this afternoon.
The south-coast club started brightly at St Mary's, but Reading looked dangerous on the break and had strong penalty appeals waved away when Jay Tabb appeared to be clipped in the box.
Hal Robson-Kanu rattled the post in first-half stoppage time but Saints continued to threaten after the break, getting their just rewards in the 61st minute when Puncheon lashed home what proved to be the winner.
The main talking point coming into the match was goalkeeper Kelvin Davis' return, having not started in the Premier League since the 6-1 mauling at Arsenal in mid-September.
The club captain replaced the injured Paulo Gazzaniga, while Gaston Ramirez dropped to the bench having spent the week in Uruguay on compassionate grounds.
Reading goalkeeper Adam Federici had to keep out a goal-bound Lallana prod and then stopped Lambert after Rodriguez was blocked off by Shaun Cummings.
Lallana curled over from the edge of the box but, for all of Saints' attacking intent, Reading looked menacing on the counter-attack.
Tabb's burst forward and strike that stung the palms of Davis epitomised that and the Royals felt they should have had a penalty when Jack Cork then caught the midfielder.
Saints soon felt hard done by themselves as Puncheon had a 34th-minute opener disallowed after an altercation between Federici and Maya Yoshida in the build-up.
Southampton boss Nigel Adkins was forced to shuffle the pack as half-time approached after captain Lallana suffered a knee injury, resulting in an early-than-planned introduction for Ramirez.
Puncheon had a shot deflected behind and Yoshida saw a header cleared off the line by Cummings as Saints pushed for a half-time lead, although Robson-Kanu saw a header rebound back off the post in stoppage time at the other end.
Reading were on top as the second half resumed but Saints soon found their feet, with Puncheon forcing Federici into action low to his left six minutes in.
Rodriguez's chest and volley rolled wide as Saints continued to press and, after Sean Morrison and Yoshida both received treatment, they had the lead.
Lambert played through Clyne and his ball was controlled by Puncheon, who continued to fire a right-footed strike across Federici into the far corner.
Rodriguez saw penalty appeals rejected moments after the 61st-minute goal, although a poor Clyne clearance would have cost Southampton immediately had Jobi McAnuff's shot been lower.
Morrison was replaced by Alex Pearce in the 65th minute after his earlier knock and Noel Hunt soon came on for Tabb as Reading boss Brian McDermott looked to claw a goal back.
The move to a three-pronged attack almost paid dividends immediately as Adam Le Fondre nodded just wide after a poor headed clearance by Clyne.
Federici almost sliced a backpass into his own goal and then did well to did well to hold onto a Clyne cross-shot.
Guly do Prado was booed by sections of the home fans when replacing Rodriguez 12 minutes from time, although he soon hushed those naysayers with a long-range effort that curled just over after Puncheon again came close.
Reading threatened from late set-pieces and Do Prado was denied from close range, but it remained 1-0 as Saints collected their second clean sheet of the season.