Town are now just two points off the top six after goals from Thomas Gaardsoe, Matt Holland and Jim Magilton sunk Reading, whose only reply came from Nicky Forster.
Gaardsoe gave Ipswich the perfect start when he headed home a Martijn Reuser free-kick after just 40 seconds.
Reading hit back strongly and Andy Hughes hit the bar and Forster forced a good save out of Andy Marshall before the visitors deservedly levelled through Forster's close-range strike.
Town regained control after that setback and they went ahead again on 31 minutes through skipper Holland's unstoppable 35-yard strike.
As the hosts finished the half strongly, Marcus Hahnemann in the Reading goal did well to keep out a Pablo Counago shot before Marcus Bent headed a Magilton cross over.
Luke Chadwick had a good shot blocked early in the second half, before Reading were reduced to ten men when Adie Viveash was sent off.
Play had stopped for a Reading free-kick when Viveash clattered into Gaardsoe, catching him with a knee and also pushing him in the face.
Ipswich had a penalty shout for handball rejected soon after, despite the linesman flagging for it, but referee Clive Wilkes ruled it had struck a Reading defender on the chest.
Town got the crucial third goal on 70 minutes when a surging run by Fabian Wilnis ended with the ball breaking to Magilton who coolly curled the ball home.
It was then just a question of how many more Ipswich would score but it ended at three with both Bent and Reuser going the closest to adding to the tally.