The Royals pipped Saints to the npower Championship crown last term, and the hosts exacted some revenge on Saturday afternoon.
Reading threatened from late set-pieces and Guly Do Prado was denied from close range, but it remained 1-0 as Saints collected their second clean sheet of the season.
Jay Rodriguez started brightly for Southampton, firing just wide before Morgan Schneiderlin bundled a fierce Nathaniel Clyne cross inches wide. Reading goalkeeper Adam Federici had to keep out a goal-bound Adam Lallana prod and then stopped Rickie 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. A Jay Tabb strike stung the palms of Kelvin Davis and the Royals felt they should have had a penalty when Jack Cork then caught the midfielder.
Puncheon had a 34th-minute opener disallowed after an altercation between Federici and Maya Yoshida in the build-up. Southampton were forced to shuffle the pack as half-time approached after Lallana suffered a knee injury, as Gaston Ramirez, who was on the bench having spent the week in Uruguay on compassionate grounds, came on.
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 but they soon had the lead as 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.
Sean Morrison was replaced by Alex Pearce in the 65th minute after his earlier knock and Noel Hunt soon came on for Tabb. 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.
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.
Source: PA
Source: PA