Preston extended their unbeaten run to ten matches but only after an Ipswich side paralysed by fear threw away a 2-0 half-time lead.
Town should have been twice as far in front after totally outplaying their opponents in the first 45 minutes, but within 20 minutes of the restart Preston were ahead.
Jon Macken netted a penalty against his former side and Alan Lee powered in his fourth of the season to give Ipswich that two-goal cushion.
However, David Nugent capitalised on a cataclysmic mistake by Fabian Wilnis to pull one back and immediately Ipswich heads dropped.
Once Liam Chilvers levelled three minutes later there was only ever one winner, and the clinching goal came from Simon Whaley with a 25-yarder on 65 minutes.
Ipswich huffed and puffed, but players who were stroking the ball around in the first half saw it as a hot potato in the second, and with only loanee Mark Noble and Jaime Peters maintaining their first-half form, Preston could have won even more comfortably.
It all seemed light years away when Town got off to a flying start. Carlo Nash had already saved a Lee header when Matt Hill tripped Noble and Macken send the keeper the wrong way for his first Ipswich goal.
Nash beat away Richards' 20-yarder before spilling a deep Wilnis cross at the feet of Richards, who dithered and saw his eventual shot cleared from close to the line by Graham Alexander.
Ipswich were dominant though and a sweeping move involving Noble, Peters and Sylvain Legwinski ended when Richards crossed for Lee to out-jump Hill and power home a six-yard header on 37 minutes.
Richards could have sealed it on 41 minutes when Lee flicked on to Macken who squared for the midfielder to be one-on-one with Nash but he spooned his shot well wide.
Preston hadn't managed an effort on target until 49 minutes when Paul McKenna surged on to a Danny Pugh pass and drew a good save from Lewis Price with an angled shot.
Incredibly though, Ipswich imploded to gift the visitors two goals in the next seven minutes.
First Wilnis miscued a back header allowing Nugent to slot past Price, before a 50-yard Alexander free-kick made its way to an unmarked Chilvers to loop a header over the keeper.
Lee fired over as Town tried to hit back, but they were already suffering a lack of confidence in front of a stunned crowd and it was no real surprise when Preston went ahead.
The visitors broke quickly and when Whaley received the ball just inside the Town half, Wilnis back-pedalled to the edge of the box where the midfielder cut past him and fired low beyond Price.
Dan Harding made a superb last-ditch tackle to rob Nugent when he appeared to be clean through.
Town sent on Billy Clarke and loan capture Gary Roberts, signed earlier in the day from Accrington Stanley, with 11 minutes to go and they managed to perk things up.
They worked a one-two which ended with Clarke prodding an angled shot into Nash's arms.
In stoppage time substitute Brett Ormerod should have sealed it when Whaley put him clear in a quick breakaway but he skied his shot well over.