Three goals in seven minutes saw Ipswich come from behind to win.
The hosts trailed at half-time as Stern John headed in Ivan Sproule's cross, but winger Jon Walters levelled with a low shot in off the post.
Pablo Counago headed in to put Ipswich ahead, then Liam Fontaine deflected Jon Stead's pass into the net from distance for a rather spectacular own goal.
But Ipswich finished the game with 10 men as Alex Bruce was sent off for a two-footed lunge on Nicky Maynard.
Ipswich boss Jim Magilton:
Cannot play media. Sorry, this media is not available in your territory.
"If Alex left the ground, he deserved to go. Alex is a whole-hearted footballer but I don't think he goes into a tackle maliciously.
"I can't fault the players' performance.
"I thought they showed great character. It was all about the result tonight."
Bristol City manager Gary Johnson:
"I was pleased with the way we started but that was it. They were just very poor after half-time.
"I would like to be able to say it was something I said and it was my fault but it wasn't.
"It's very poor to let in three goals in the space of seven minutes. It's poor defending. It was a poor day."
Ipswich: Richard Wright, Volz, McAuley, Bruce, David Wright, Walters, Norris, Shumulikoski, Ambrose (Garvan 64), Stead (Naylor 63), Counago (Lisbie 84).
Subs Not Used: Supple, Haynes.
Sent Off: Bruce (61).
Booked: Volz, Counago, Shumulikoski.
Goals: Walters 49, Counago 51, Fontaine 56 og.
Bristol City: Basso, Brian Wilson, Carey (James Wilson 46), McCombe, Fontaine, Sproule, Elliott, Skuse, McIndoe, John (Akinde 65), Maynard (Trundle 65).
Subs Not Used: Henderson, Williams.
Bookmark with:
What are these?