Southampton suffered their first defeat in six games despite a late rally at Molineux inspired by a sumptuous James Ward-Prowse free-kick.
Saints enjoyed the better of the first half, racking up nine corners, but were unable to penetrate one of the country’s meanest defences and fell behind by virtue of a contentious penalty decision five minutes before the interval.
Raúl Jiménez converted the kick, while long-serving captain Conor Coady doubled the lead just before the hour mark.
With José Sá seemingly unbeatable in the Wolves goal, Ward-Prowse had other ideas, finding the top corner with an unusually driven set-piece, opting against his usual technique to bamboozle the Portuguese stopper with seven minutes left.
Saints pushed for an equaliser and were inches away from finding it, only for Romain Perraud to head against the underside of the crossbar in the 89th minute, before Adama Traoré’s cool finish completed the job on the counter-attack.
The pre-match team news was easy enough, with Ralph Hasenhüttl choosing to stick rather than twist after watching his side dismantle Brentford at St Mary’s.
That meant Nathan Tella continued in the right wing-back role, despite the return of Kyle Walker-Peters from Covid, with the defender named among the substitutes along with Yan Valery, who was back from a one-match ban.
Saints were in confident mood, five matches unbeaten with seven goals scored in their last two, and were straight on the front foot at Molineux, earning six corners in the opening 10 minutes.
But Wolves matches are notoriously low scoring – only 28 goals had been scored in their 19 previous league games, so perhaps it was no surprise that chances were few and far between.
The hosts threatened for the first time after 18 minutes. Jiménez fed the overlapping Rayan Aït-Nouri, who fizzed in a low cross that needed emergency action from Lyanco, who was fortunate not to concede an own goal with a crucial interception that flew over Fraser Forster’s crossbar from six yards.
Saints’ response was a raid down the left from which Perraud cut inside on to his less-favoured right foot and tried his luck with a good low shot that had to be turned aside by Sá at his near post.
The game was opening up and the trickery of Daniel Podence was exciting the home fans. Effortlessly controlling a long diagonal pass, he engineered a shooting chance but Forster was equal to his low drive and smothered the danger.
Wolves were growing in confidence after a slow start, and edged in front five minutes before the interval in controversial fashion.
Lyanco’s original block on Jiménez diverted the ball towards Aït-Nouri, but Jan Bednarek beat him to it, getting a slight touch ahead of the Wolves man before his momentum carried him into him, causing a second collision.
After a lengthy delay for VAR to inspect every last detail, referee Michael Salisbury was told to consult the pitch-side monitor, at which point the writing was on the wall.
Bednarek was ultimately penalised for his second challenge, inviting Jiménez to send Forster the wrong way and roll the ball calmly into the corner to score his fifth goal in his last five meetings with Saints.
The visiting response was encouraging. Oriol Romeu dug out a teasing cross begging to be headed home by Mohammed Salisu, but the defender’s header was too close to Sá, who threw himself to his right more in hope than expectation but managed to parry the ball to safety.
Then Perraud’s cross from the left was just over the head of the offside Armando Broja, but the onside Tella arrived late behind him and somehow turned the ball over from point-blank range, although the raised flag did save his blushes.
Saints’ corners kept coming, and from the eighth of nine in the first period Salisu forced another smart stop from Sá, tipping one over the bar, but again either side of the keeper would surely have found the net.
In the second half Saints reverted to their traditional 4-2-2-2 formation, sacrificing Ibrahima Diallo and partnering Broja with Ché Adams in attack.
Most of the early possession came from the team in red and white, but Wolves seem to be just as comfortable without the ball as they are with it, and creating clear opportunities was still proving difficult.
Hasenhüttl led the appeals when Romeu was first to a bouncing ball in the box and took a kick for his troubles, but the contact was considered insufficient to warrant the same punishment as Bednarek’s innocuous coming together in the first half.
If coming from 1-0 down was not a stiff enough task against a Wolves side who give so little away, Saints gave themselves a mountain to climb when Coady nodded in a close-range second just shy of the hour.
When Forster was tempted by a floated free-kick into the box, Max Kilman headed it over his head and towards his far post, leaving the keeper in no man’s land.
As Molineux watched in slow motion, the ball bounced against the post and sat up perfectly for Coady to finish the job.
Saints’ desire to find a way back into the game could not be questioned. Romeu, a standout performer on the day, crossed from the left for Broja to send a glancing header goalwards, but Sá was able to fall on the ball for an easy save.
Hasenhüttl introduced Stuart Armstrong for Tella and Adam Armstrong for Broja as time ticked on, while Adams shot tamely at Sá from a narrowing angle on his left foot with an attempt that lacked conviction.
Sá looked on course for Premier League clean sheet number nine of the season, but Ward-Prowse had other ideas with one of the finest free-kicks of his career.
Lining it up 30 yards from goal, the skipper may have decided it was too far out and too central for his usual technique, and instead just put his laces through it, sending an unstoppable strike sailing into the top corner that swerved wickedly away from Sá.
It was a goal that did not deserve to be on the losing side, and Perraud was inches away from salvaging a point with a minute to go.
Makeshift right-back Bednarek delivered the perfect cross for the Frenchman, whose header struck the underside of the crossbar and somehow stayed out as Saints cursed their luck.
Substitute Traoré should have made the game safe before he did, firing the rebound over the top after Forster denied Fábio Silva, but the jet-heeled Spaniard would not be denied, racing through to slot home the killer third in stoppage time.