Raul Jimenez, Conor Coady and Adama Traore scored to beat the Saints 3-1.
Wolves survived a late Southampton fightback to maintain their European push.
Raul Jimenez’s penalty, Conor Coady’s first Molineux goal for six years and Adama Traore’s injury-time effort earned a 3-1 win.
James Ward-Prowse’s stunning free-kick pulled a goal back for the Saints and Romain Perraud hit the bar just before Traore sealed victory for the hosts.
Bruno Lage’s side were not at their vibrant best but it was enough to squeeze past the Saints to sit eighth in the Premier League.
They are just two points adrift of the top six while mid-table Southampton slipped to a seventh defeat of the season.
There was little to separate the sides early on and, after Lyanco steered Rayan Ait-Nouri’s delivery narrowly over his own bar, Jose Sa shovelled Perraud’s low effort wide.
Yet it was a game which drifted without much purpose until the half’s decisive flashpoint.
Only Manchester City have conceded fewer goals than Wolves’ 15 this season but scoring has been the hosts’ biggest issue.
Their pre-game tally of 14 underlines the lack of punch but the hosts added one to their collection after 36 minutes, even if they needed the help of VAR.
A neat Daniel Podence run saw the forward find Jimenez and his shot was blocked with the ball running to Ait-Nouri.
Jan Bednarek’s sliding challenge cleaned out the wing-back and it seemed an open and shut case but referee Michael Salisbury awarded a corner.
VAR naturally intervened and following a lengthy delay Salisbury checked his monitor to finally award the penalty.
It had taken four minutes but Jimenez – who got the winner when the teams met at St Mary’s in September – finally stepped up to beat Fraser Forster for his fourth goal of the season.
Two minutes later Sa preserved Wolves’ lead when he parried Mohammed Salisu’s header and, soon after, Nathan Tella ballooned over.
The Saints had responded well and Sa tipped Salisu’s injury-time header over and a fairly mundane first half ended with Lage and Ralph Hasenhuttl exchanging words.
Rather than find renewed vigour Southampton plodded along aimlessly after the break and ultimately paid the price.
Coady had seen a header disallowed when debutant Toti Gomes strayed offside but the captain did not have to wait long to make it 2-0 after 59 minutes with his first home goal since 2016.
Ait-Nouri’s free-kick tempted Forster to come but he was left stranded when Max Kilman’s header looped over him and bounced off the post.
Coady was there to nod in from close range and, after another VAR check, Wolves could celebrate.
It seemed to wrap it up for the hosts but they were made to sweat when Ward-Prowse fired in a brilliant 30-yard free-kick with six minutes left.
The goal set up a grandstand finish and Perraud’s header hit the underside of the bar in the 89th minute.
But Southampton’s hopes of a comeback were extinguished when the impressive Ait-Nouri slipped Traore through and he rolled the ball past Forster in injury time.