Joe Ledley inspired a Cardiff comeback win, Preston staying in the drop zone after a third straight home loss.
Ledley scored the winning goal at Deepdale
Simon Whaley gave Preston the early lead, latching on to Lewis Neal's corner with a low, rasping drive.
Roger Johnson equalised after the break, powering home an eight-yard header from Ledley's swinging corner.
Ledley then combined with Jimmy Floyd Hasselbaink down the left, powered into the box and held his feet under Sean St Ledger's tackle to guide in the winner.
The victory was the Bluebirds' first at Deepdale since 1986 and leaves manager Dave Jones' side - who have lost just one of their last six - with realistic play-off ambitions going into 2008.
Preston manager Alan Irvine:
"We hoped to build on two really good away wins but we haven't done so we now have to go back on the road again and get a good result.
"It was a massive disappointment, especially after an encouraging first half. I spoke to them before the game about getting a good start and we got that.
"I thought we dominated the first half, certainly had the best chances, and we could have done with that second goal.
"We didn't start well in the second half and we should have dealt with the corner [for Cardiff's first goal].
"We then missed a very good chance to go 2-1 ahead and really from that point on we made a lot of mistakes."
Cardiff manager Dave Jones:
"In the first half we looked tired after a lot of games and lacked the necessary cutting edge.
"The second half was about squeezing the game by that extra 20 yards. When we did that we caused them all sorts of problems, and when they were in possession we put them under pressure.
"We grew in confidence, especially after the equaliser, and I felt we could have made it easier with a third."
Preston NE: Lonergan, Davidson, Agyemang, Gallagher, Carter, St Ledger (sub Hawley 86), Chilvers, Whaley (sub Sedgwick 18), McKenna (capt), Hill, Lewis Neal (sub Mellor 71).
Subs not used: Chris Neal, Nicholls.
Booked: Davidson (26), St Ledger (84).
Cardiff: Schmeichel, McNaughton, Capaldi, Johnson, Loovens, McPhail (capt), Rae, Ledley, Whittingham, Hasselbaink (sub MacLean 74), Parry.
Subs not used: Oakes, Purse, Blake, Ramsey.
Booked: McPhail (76), MacLean (88).
Referee: Mr M Haywood