Match ends, Preston North End 0, Ipswich Town 1.
Mustapha Carayol scored on his first start for Ipswich as they put a dent in Preston's play-off ambitions.
The January arrival from Nottingham Forest settled the match midway through the first half, nodding Cole Skuse's ball past his marker before finishing.
Dominic Iorfa hit the bar as Ipswich dominated early on, although Preston rallied after the break.
Greg Cunningham, Josh Earl and Tom Barkhuizen tested Ipswich keeper Bartosz Bialkowski but Town held on.
Ipswich had not lost to Preston in the last six meetings between the two sides and the Tractor Boys looked on course to extend that record after Carayol put them in front.
Such was Lilywhites boss Alex Neil's frustration, he made two substitutions before half-time, bringing on Earl and Josh Harrop for Calum Woods and Callum Robinson.
Bialkowski was required to make fairly routine saves as Preston lost for only the second time in eight home league games.
Preston boss Alex Neil told BBC Radio Lancashire:
"I don't think we played anywhere near the levels we can. It was flat and we never really got going.
"I think it's maybe down to how much we've demanded from the players and the last three games have taken a lot out of them.
"I sent them in early from training yesterday because they looked flat and tired and I thought that continued into today.
"The players wanted to play well today but they didn't have the energy."
Ipswich boss Mick McCarthy told BBC Radio Suffolk:
"I think that's the culmination of a really good week of performances. We got what we deserved today.
"It's credit it to them that the players have adapted to the system we're playing and done well in it.
"We should have had more goals and I could see them getting back into it but we defended really well.
"We're not in for a chance of the top six as far as I'm concerned but that doesn't mean we'll stop fighting for it."
- 15WoodsSubstituted forEarlat 38'minutes
- 20DaviesBooked at 45mins
- 39BodinSubstituted forHorganat 67'minutes
- 37RobinsonSubstituted forHarropat 38'minutes
- 8SkuseBooked at 45mins
- 9WaghornBooked at 83minsSubstituted forSpenceat 90+2'minutes
- 14GarnerBooked at 49minsSubstituted forSearsat 70'minutes
- 32CarayolSubstituted forHyamat 45'minutes
- Scott Duncan
- Shots on Target
Second Half ends, Preston North End 0, Ipswich Town 1.
Offside, Preston North End. Joshua Earl tries a through ball, but Paul Huntington is caught offside.
Substitution, Ipswich Town. Jordan Spence replaces Martyn Waghorn.
Delay over. They are ready to continue.
Delay in match Callum Connolly (Ipswich Town) because of an injury.
Tom Barkhuizen (Preston North End) wins a free kick on the left wing.
Foul by Cameron Carter-Vickers (Ipswich Town).
Alan Browne (Preston North End) wins a free kick on the right wing.
Foul by Jonas Knudsen (Ipswich Town).
Attempt missed. Tom Barkhuizen (Preston North End) right footed shot from outside the box is high and wide to the right.
Martyn Waghorn (Ipswich Town) is shown the yellow card.
Offside, Ipswich Town. Callum Connolly tries a through ball, but Martyn Waghorn is caught offside.
Offside, Preston North End. Joshua Earl tries a through ball, but Tom Barkhuizen is caught offside.
Offside, Ipswich Town. Adam Webster tries a through ball, but Martyn Waghorn is caught offside.
Alan Browne (Preston North End) wins a free kick in the defensive half.
Foul by Luke Hyam (Ipswich Town).
Offside, Preston North End. Alan Browne tries a through ball, but Louis Moult is caught offside.
Offside, Ipswich Town. Martyn Waghorn tries a through ball, but Freddie Sears is caught offside.
Attempt saved. Tom Barkhuizen (Preston North End) header from the centre of the box is saved in the bottom right corner. Assisted by Daryl Horgan with a cross.