Town scored three times in seven second-half minutes to wipe out a 1-0 deficit and, despite Alex Bruce's red card, they held on comfortably for the three points.
Ipswich won this fixture 6-0 last season , but City went ahead this time after just five minutes when Stern John headed home Ivan Sproule's pinpoint cross.
Town had already seen Pablo Counago's header cleared off the line by Brian Wilson and the rest of the half saw a personal battle between Town's Darren Ambrose and City keeper Adriano Basso.
Basso made no fewer than five fine saves to deny the on-loan winger and also tipped over a Velice Sumulikoski effort, while opposite number Richard Wright made good saves to deny Nicky Maynard and Michael McIndoe.
Ipswich deservedly levelled just four minutes after the break when Jon Stead flicked on Moritz Volz's long ball and Jon Walters fired an angled drive in off the post.
Amazingly, Ipswich built a 3-1 lead by the 56th minute as, firstly, the excellent Counago glanced in a deep Volz cross with Basso out of position.
The third goal was a freak one as City's left-back, Liam Fontaine, tried to clear a Stead pass intended for Walters, but could only divert the ball beyond a helpless Basso.
Ipswich were cruising but they then lost Bruce on 61 minutes to his second red card of the season for a studs-up challenge on Maynard, who was stretchered off.
Despite the extra man, the Robins created little with their best effort a shot by substitute Lee Trundle from McIndoe's cross which Town skipper Gareth McAuley did well to block.