Harrison Ashby’s first senior goal was not enough for Swansea City as Preston North End claimed all three points at Deepdale.
Wing-back Ashby had finished off a superb sweeping move to fire Michael Duff’s side ahead in Lancashire, while Jay Fulton and Jamie Paterson would later go close to adding to Swansea’s tally.
However, Andrew Hughes would head in an equaliser before Duane Holmes smashed home the winner with 11 minutes to play.
It was harsh on the Swans, who had responded to head coach Duff’s urging for an improvement on their previous away performance at West Brom, and there were long spells where they had a solid control over proceedings.
Liam Cullen had come into the Swansea team in the only change from the draw against Coventry City, while Ben Cabango made his 150th appearance for the visitors in defence.
The Swans started brightly, with Charlie Patino and captain Matt Grimes heavily involved.
A pass from Grimes allowed Ashby to get in behind the home defence and float a cross to the back post that Preston eventually scrambled clear.
At the other end Ryan Ledson steered over from a Brad Potts pull-back before Swansea threatened again.
Cullen dropped deep and sent Josh Key scurrying onto a pass down the left flank, and backed the pass up with a supporting run that ended with him steering an angled effort over the par from the edge of the area.
Holmes then got free down the right for Preston but Will Keane skied his pass well over the bar.
However, Preston were enjoying a spell in the Swansea half, and good defending from the likes of Cabango and Harry Darling helped ensure Carl Rushworth was not tested.
Swansea responded with an outstanding goal.
Patino and Key combined superbly down the left for the former to float a cross to the back post, and Ashby arrived to calmly steer a volley back across goal and into the net.
Rushworth denied Keane seconds after the game restarted, doing well to hold a snap-volley low at his left-hand post.
Swansea should have led 2-0 five minute before the break when quick-thinking from Cullen saw a sharply-taken free-kick send Fulton in on goal.
The Scot had Ashby in support but delayed his pass and the final ball was blocked by a covering defender.
The Swans retained their lead at the interval and produced a lovely move started by Ashby’s clever backheel to have a decent spell of pressure in the Preston half.
Grimes then drove wide after nice link work between the skipper, Fulton and Patino, before Key’s strike was deflected narrowly over his own bar by Ledson.
Frokjaer then sent a fizzing effort narrowly over the Swansea bar just beyond the hour mark, before Key made a brilliant block as Holmes set his sights from just inside the area.
But Holmes would lay on the equaliser as his cross was met by a glancing header from Hughes that left Rushworth with absolutely no chance.
Duff sent on Ollie Cooper and Jamie Paterson for Patino and Cullen respectively, and the latter’s first touch saw him send a dipping volley just over the bar.
Ashby just failed to pick out Key at the far post as the contest entered the final 15 minutes, but Preston swept straight up the other end to take the lead through Holmes.
Ali McCann skipped away into space down the left and cut the ball back for the former Huddersfield man, who fired high into the roof of the net.
Swansea pressed for a leveller deep into stoppage time but it wasn't to be, with Mykola Kuharevich firing a volley wide in the final seconds after taking a pass from Joe Allen on his chest.
Preston North End: Freddie Woodman, Liam Lindsay, Will Keane, Alan Browne (captain), Mads Frokjaer (Ben Woodburn 90), Jordan Storey, Andrew Hughes, Ryan Ledson, Duane Holmes Jack Whatmough 84), Kian Best (Ali McCann 62), Brad Potts.
Unused Substitutes: Dai Cornell, Greg Cunningham, Patrick Bauer, Felipe Rodriguez-Gentile, Noah Mawene, Josh Seary.
Swansea City: Carl Rushworth, Harry Darling, Ben Cabango, Nathan Wood; Harrison Ashby (Azeem Abdulai 80), Jay Fulton (Joe Allen 80), Matt Grimes (captain), Charlie Patino (Ollie Cooper 71), Josh Key; Jerry Yates (Mykola Kuharevich 83), Liam Cullen (Jamie Paterson 71).
Unused Substitutes: Andy Fisher, Brandon Cooper, Kyle Naughton, Cameron Congreve.
Referee: Josh Smith