Preston North End 2 Southampton 3
Jason Euell was injured in the warm-up and had to be replaced by Lloyd James with Oscar Gobern on the bench.
Preston had the first chance when a deep cross by Ross Wallace to the back post was half volleyed by Jon Parkin and Kelvin Davis made a good save.
Parkin had the ball in the net in the 22nd minute but the effort was disallowed for an offside against Sean St Ledger.
Preston made it 1-0 in the 35th minute when a Jay McEveley deep cross from the left-hand side was played on by Parkin to Billy Jones, who hit a first-time left-foot shot through a crowd of bodies from 20 yards into the net.
Preston made it 2-0 in the 41st minute when a Paul McKenna chip into the box was knocked on by Jones to Steve Elliott and he hit a 10-yard shot into the bottom left.
Saints made two substitutions at half-time, bringing on Gobern and Bradley Wright-Phillips for Ryan Smith and James.
Wright-Phillips had an early shot saved and Preston's Wallace had another shot saved by Davis.
It was 2-1 in the 63rd minute when Andrew Surman won a corner and took it left-footed and debutant Alex Pearce, on loan from Reading, rose highest to nod home from close range.
In the 68th minute it was 2-2 when Jack Cork crossed and St Ledger made a mistake and substitute Gobern crossed the ball over to Surman, who dived to head the ball home.
The winner came in the 90th minute when David McGoldrick broke through the middle of the pitch, beating Youl Mawene before firing into the bottom right-hand corner of the net to break Preston's hearts.