Portsmouth took the lead in the 19th minute when Ipswich goalkeeper Andy Marshall dropped a centre from Matthew Taylor at the feet of Svetoslav Todorov, for the Bulgarian to run in his 12th goal of the season.
Ipswich had numerous chances to equalise with Pablo Counago shooting over from six yards and Richard Naylor clipping the top of the bar with a shot on the turn in the 35th minute.
But Portsmouth were always menacing going forward and Marshall saved well from Steve Stone while Deon Burton hit a post in the 38th minute.
Ipswich levelled in the 54th minute when Jim Magilton took a corner on the right and big Danish defender Thomas Gaardsoe rose at the far post to score with a header.
Counago again shot wide from six yards and goalkeeper Shaka Hislop made a great save from a header by Hermann Hreidarsson.
In the last minute Ipswich full-back Chris Makin was sent off for a second bookable offence and deep into injury time Marshall made a magnificent save to deny substitute Mark Burchill.
Ipswich defender Fabian Wilnis, injured in the last minute at a corner, collapsed after the final whistle on his way back to the dressing room.
Referee Barber watched as Wilnis was taken off on a stretcher at the end of a tough match watched Portsmouth's biggest crowd of the season, 19,130.