Alex Pearce scored his third goal of the season to hand Reading their fourth consecutive home win in the league.
In an end-to-end start, Ipswich forward Jay Emmanuel-Thomas fired in a shot that clipped the top of the crossbar.
Reading scored when Jobi McAnuff's free-kick was met at the back post by Pearce, who headed in powerfully.
Simon Church went close to doubling Reading's advantage eight minutes later but was denied by keeper Arran Lee-Barrett.
The result ended Ipswich's three-match unbeaten run after an eventful but scrappy encounter, during which both sides wasted several chances.
Pearce had a glorious opportunity to open the scoring but misdirected his header, then Emmanuel-Thomas hit the bar with his effort.
After the interval, Ipswich came closest to breaking the deadlock when Michael Chopra shot wide from 10 yards from a tight angle.
The home side finally broke the deadlock when Lee Bowyer was penalised for handball, leading to McAnuff's free-kick and Pearce's winner.
Ipswich struggled to mount a recovery as Reading enjoyed the better of the territory in the final stages.