Match ends, Ipswich Town 2, Reading 1.
Ipswich climbed back into the Championship play-off places courtesy of a late winner against Reading.
Ryan Fraser put Ipswich ahead just before the hour, turning in the area after Freddie Sears picked him out with a cross from the right.
Garath McCleary equalised from the penalty spot after Hal Robson-Kanu was tripped by Cole Skuse.
Brett Pitman then combined with fellow substitute Luke Varney to side-foot in a winner with a minute remaining.
Reading, now without a league win in four games, slip to 16th in the table.
There was little entertainment in the first half, but after the break Sears found space down the wing and loanee Fraser had time to spin and score his sixth goal of the season.
McCleary failed to pick out Matej Vydra on the break as Reading pounced on a mistake by Jonas Knudsen, but moments later Skuse's clumsy challenge allowed McCleary to convert from the spot.
Ipswich boss Mick McCarthy's attacking substitution was eventually rewarded when Pitman slid in at the far post for his ninth goal of the season.
Ipswich Town manager Mick McCarthy:
"It was a great win and it is brilliant when your subs come on and contribute like that.
"I'm chuffed for them and chuffed for everyone. It wasn't a great game, but I think Reading are a really good side - it was one of our hardest matches of the season.
"I said at half-time that we needed to keep grinding away, even if we nicked it in the last minute. It was not a cunning plan, it was a tough and rather scrappy match.
"But we showed endeavour and resilience and Brett Pitman showed what a fantastic finisher he is."
Reading manager Brian McDermott told BBC Radio Berkshire:
"It was a sickener, it really was. But, I can't complain about the spirit and the commitment.
"It was a pretty ugly game, I knew what we'd be coming into tonight and that's what happened.
"I thought we might go on and win the game at 1-1 when we got the penalty, but it wasn't to be.
"Really disappointed. But everything in there, the spirit, the commitment, the guts. I can't have any complaints with that."
- 6BerraBooked at 65mins
- 7Maitland-NilesSubstituted forBruat 45'minutes
- 19HyamSubstituted forPitmanat 82'minutes
- 9MurphySubstituted forVarneyat 87'minutes
- 26Al Habsi
- 11ObitaBooked at 19mins
- 6NorwoodBooked at 45mins
- 21QuinnSubstituted forMcClearyat 61'minutes
- Tim Robinson
- Shots on Target
Second Half ends, Ipswich Town 2, Reading 1.
Attempt blocked. Oliver Norwood (Reading) right footed shot from outside the box is blocked. Assisted by Chris Gunter with a headed pass.
Goal! Ipswich Town 2, Reading 1. Brett Pitman (Ipswich Town) right footed shot from the centre of the box to the bottom left corner. Assisted by Luke Varney.
Foul by Luke Varney (Ipswich Town).
Jordan Obita (Reading) wins a free kick in the defensive half.
Offside, Ipswich Town. Cole Skuse tries a through ball, but Luke Varney is caught offside.
Substitution, Ipswich Town. Luke Varney replaces Daryl Murphy.
Offside, Ipswich Town. Christophe Berra tries a through ball, but Freddie Sears is caught offside.
Attempt blocked. Christophe Berra (Ipswich Town) right footed shot from the centre of the box is blocked.
Corner, Ipswich Town. Conceded by Jordan Obita.
Offside, Ipswich Town. Cole Skuse tries a through ball, but Brett Pitman is caught offside.
Attempt blocked. Matej Vydra (Reading) right footed shot from the centre of the box is blocked. Assisted by Danny Williams.
Substitution, Ipswich Town. Brett Pitman replaces Luke Hyam.
Attempt saved. Jonas Knudsen (Ipswich Town) left footed shot from outside the box is saved in the centre of the goal. Assisted by Tommy Smith.
Corner, Ipswich Town. Conceded by Jake Cooper.
Attempt blocked. Freddie Sears (Ipswich Town) right footed shot from the right side of the box is blocked. Assisted by Ryan Fraser.
Attempt missed. Matej Vydra (Reading) right footed shot from outside the box is too high. Assisted by Yann Kermorgant with a headed pass.
Jonas Knudsen (Ipswich Town) wins a free kick in the defensive half.
Foul by Garath McCleary (Reading).