Zigic gave the hosts an early lead when he headed in at the near post following a long throw.
The striker came close again five minutes later, but his header hit the sidenetting.
The visitors drew level against the run of play as Lee Martin lashed in from the edge of the area past Boaz Myhill.
Ipswich debutant Alex McCarthy pulled off an important save on 27 minutes as he got down low to tip another Zigic header away.
Marlon King had an effort blocked early in the second half before McCarthy was again on hand to keep out a Zigic header.
King came close to giving City the lead with 15 minutes to play when his drive crashed back off the post.
Ipswich appealed for a penalty in the final ten minutes when substitute Michael Chopra looked to have been fouled by Steve Caldwell, but their protests were waved away.
Birmingham grabbed their winner in injury time as Zigic poked home after his initial header had been saved.