Saints looked to be cruising into the final until twenty minutes into the second half when Thomas Stewart pulled a goal back for the home side.
Wolves substitute Jordan Fitzpatrick levelled the tie with just eight minutes remaining to take the game into extra-time.
Mark Davies gave Wolves a 3-2 aggregate lead with just eight minutes of extra time left but Leon Best brought the score back to 3-3 with just two minutes of the game remaining.
So, with the scores still level at the end of extra-time the game was decided on penalties which Southampton won 5-4.
Southampton will now play Ipswich Town in the final - the Suffolk side having beaten Tottenham in the other semi-final.
Wolves: Hennessey, Little, Rafferty, Taylor, Riley, Davies (capt), Musson, Gleeson, Stewart, Cornes, Collins. Subs: Fitzpatrick, Shepherd, Bennett, Hughes, Ferran.
Southampton: McNeil, Richards, Critchell, Rudd, Craine, James, Walcott, Sparv, Best, McGoldrick, Dyer. Subs: Wallis-Tayler, Jones, Condesso, Dutton-BlackLallana.