Substitute David Nugent made the most of a rare outing for Portsmouth as his goal helped the visitors hold off a brave challenge from ten-man Ipswich Town.
This was Ipswich's first home defeat in 18 games - stretching back to last March - and the key moment came after just 24 minutes when Town midfielder Liam Trotter was harshly sent off by referee Mark Halsey.
Halsey deemed Trotter's challenge on Pedro Mendes worthy of a straight red when many observers felt even a yellow would have been harsh as precious little contact was made and the Town man didn't go in with two feet.
That left Ipswich with a mountain to climb and it became even greater once Nugent netted six minutes into the second half, although the hosts were only denied the replay they deserved by some fine David James saves.
The game took a while to warm up before Glen Johnson went on a mazy run past three players before bringing a diving save from Neil Alexander.
Papa Bouba Diop wasted a great chance for Pompey with a tame header from a John Utaka cross which Alexander saved easily, but the game turned after Trotter's challenge, with Mendes' unnecessary writhing on the ground not helping his cause.
However, Ipswich held Portsmouth at arm's length and even created the best chance of the half in stoppage time when Pablo Counago cleverly dummied Owen Garvan's corner and Johnson just managed to deflect Billy Clarke's close-range shot over.
Nugent came on for Mendes at the break as the visitors switched to a 4-4-2 formation and aimed to take advantage of their numerical advantage.
It was Ipswich who threatened first after the break as Haynes' cross-cum-shot from the right ended on the roof of the net, and then James was down smartly to turn aside a low Haynes drive from Counago's pass.
Against the run of play, Nugent scored what proved to be the winner as he raced onto Sol Campbell's punt forward, held off Alex Bruce and slipped the ball past the helpless Alexander.
It was a cruel blow for the hosts and for a while they struggled to get into the game, with Nugent rattling the bar with a volley from Utaka's right-wing cross on 64 minutes.
Against the odds, Ipswich then proceeded to dominate the final ten minutes and only the agility of James spared Harry Redknapp's men from having to replay the tie.
Haynes miscued a volley which Counago just couldn't gather, before James had to dive to his right to turn away a firm header from substitute Alan Lee when he met Sito Castro's fine right-wing cross.
James saved his best for last though as in stoppage time, the lively Haynes let fly from just inside the box and his low drive looked destined for the bottom corner until he keeper tipped it around the post at full-stretch.