Danny Ings gave the home side the lead but a Ruben Neves penalty and a superb Pedro Neto goal gave Wolves all three points as they leapfrogged Southampton into 12th in the Premier League, dropping Ralph Hasenhuettl's side to 13th.
Southampton have won only once in their last 11 league matches and Hasenhuettl was at a loss to explain a result which condemned his club to a sixth consecutive league loss for the first time in their history.
"I think we shouldn't discuss about our run. We know what happened today, it's hard to explain this defeat," Hasenhuettl told Amazon Prime.
"Until their penalty they had no chances at goal."
Southampton took the lead when Stuart Armstrong burst down the flank and left two defenders for dead before delivering a cross to pick out Ings who emphatically volleyed home.
But Wolves were more fluid going forward in the second half and were handed a lifeline when Nelson Semedo's cross hit Ryan Bertrand's arm. Neves made no mistake in beating Alex McCarthy from the penalty spot.
"It was a very tough game, both halves were very tough," Wolves manager Nuno Espirito Santo said.
"In the first half Southampton managed the game. In the second half we were on the front foot, scored two goals and then defended very well.