Midfielder Liam Trotter was dejected after his sending off
Substitute David Nugent's second-half strike ensured Portsmouth progressed to the fourth round of the FA Cup.
Ipswich played most of the match with 10 men after midfielder Liam Trotter was sent off in the 24th minute for a lunge on Pedro Mendes.
The home side responded positively but were undone by the long-ball tactic.
Nugent neatly controlled Sol Campbell's 50m ball from defence and finished with aplomb to end the Championship side's unbeaten home record.
Ipswich boasted the best home record in the Football League - with 35 points from a possible 39 - but they were unable to get the better of a team with the best away form in the top flight.
Portsmouth started the game with the confidence of a side who have won seven of their last eight matches on the road.
Hermann Hreidarsson and Kanu both had chances to put Portsmouth ahead within 15 minutes of the start, but Hreidarsson was just wide with a close-range header and Neil Alexander was alert to Kanu's timid effort.
Pompey, defending high up the field, pegged Ipswich into their own half and the home side's frustration flared up with Trotter's dismissal.
The midfielder mis-timed his sliding tackle on Portuguese international Mendes and to the 19-year-old's astonishment - and the Portman Road faithful's - referee Mark Halsey showed a straight red when a yellow would have sufficed.
Ipswich rallied, with Billy Clarke and Denny Haynes impressing, but were unable to breach Portsmouth's defence as the score remained goalless at half-time.
The lively Haynes looked to have given the home side the lead within minutes of the re-start but David James dived low to his right to keep out Haynes's 25-yard effort.
Moments later, and against the run of play, Nugent gave the visitors the lead.
It was Nugent's first goal since the end of September in what has been a troubled season for the striker since his £6m arrival from Preston in the summer.
But he came close to doubling the advatange on the hour, only for his volley to hit the crossbar.
Ten minutes before the final whistle, John Utaka had the goal at his mercy to cement victory but the striker shot wide when it was easier to score.
Ipswich had a chance to make Utaka pay for his profligacy but James again acrobatically saved a menacing Haynes long-range effort.
The home side bombarded Portsmouth's penalty box to set up a grandstand finish but the Pompey defence remained imperious.
Ipswich: Alexander, Wright, Wilnis, Bruce, Sito (Naylor 89), Haynes, Williams (Lee 79), Garvan, Trotter, Counago, Clarke (Peters 59).
Subs Not Used: Supple, Miller.
Sent Off: Trotter (24).
Booked: Counago, Lee.
Portsmouth: James, Johnson, Campbell, Distin, Hreidarsson, Diop, Pedro Mendes (Nugent 46), Mvuemba, Utaka, Kranjcar, Kanu.
Subs Not Used: Lauren, Traore, Pamarot, Begovic.
Goals: Nugent 51.
Ref: Mark Halsey (Lancashire).
BBC Sport Player Rater man of the match: Portsmouth's David Nugent 8.50 (on 90 minutes).
Please note that you can still give the players marks out of 10 on BBC Sport's Player Rater after the match has finished.