Ipswich overcame a dogged Swansea at Portman Road to book their place in the fifth round of the FA Cup.
Alan Lee's penalty proved the difference for Ipswich
The turning point came midway through the second half, when Swansea defender Tom Williams tugged back Jaime Peters in the penalty area.
Alan Lee converted the spot kick, burying a low strike into the opposite corner from the diving Willie Gueret.
Swansea had a gilt-edged chance to equalise, but Tom Butler just failed to connect with Lee Trundle's low cross.
Swansea manager Kenny Jackett sent out a team designed to contain their Championship hosts, with Bayo Akinfenwa ploughing a loan furrow up front.
That saw top scorer Trundle consigned to the bench in favour of a five-man midfield.
606 DEBATE: Your views on Ipswich's victory
Despite that, it was Akinfenwa who had the first chance of the match, barging his way through only to scoop a right-foot shot wide.
But there were early nerves in the Swans defence, with first Dennis Lawrence and then Williams making a mess of attempted clearances.
Billy Clarke made inroads for Ipswich as he cut in from the right, but his left-foot shot clipped a defender and spun harmlessly into the hands of Gueret.
The Swans goalkeeper was again on his guard as Peters dropped between defence and midfield to pick up possession.
The Canadian international hit a curling shot that dipped dangerously towards the Swansea goal, but not enough to drop under the crossbar.
Tom Butler, Swansea's two-goal hero from the previous round's win over Sheffield United, got the visitors' first shot on target, but his weak 20-yarder was straight at Lewis Price.
Up the other end Peters was still catching the eye, drawing two defenders before laying a ball square for Sylvain Legwinski, who side-footed just wide.
Andy Robinson nearly gave the Swans the perfect start to the second half but his drive was well held by Price.
The Scouse midfielder was on target again soon after and this time Ipswich's Welsh international goalkeeper spilled the shot.
Akinfenwa slid through on the bouncing ball but could only watch it trickle inches wide of Price's left-hand upright.
Back came the Tractor Boys and Gary Roberts floated a free-kick just over, after Robinson had hacked down his opposing midfielder from behind.
The breakthrough came on 64 minutes when Williams pulled back Peters as the Ipswich wide-man was in the act of shooting.
Referee Nigel Miller had no hesitation in awarding the penalty and Lee stepped up to send Willie Gueret the wrong way.
The Republic of Ireland striker had been subjected to plenty of 'stick' from the away support, courtesy of his former life with Cardiff City, but his cool placement quietened the travelling Jacks.
Trundle came off the bench to bolster the Swansea attack, Darren Pratley - who had been booked - making way.
The striker's arrival created extra space for others and Leon Britton raced through on the right, only for Price to spread himself well to save with his legs.
Then Trundle carved out a golden opportunity to equalise, jinking to the byline and cutting a low cross back through the Ipswich six-yard box.
At the far post Butler hurled himself at the ball but was just unable to make contact.
Trundle and substitute Pawel Abbott had half-chances to score, but Ipswich absorbed a late flurry from the visitors to advance to the fifth round.
Ipswich striker Alan Lee:
"They came here slightly defensively with dropping Lee Trundle and we were surprised with that.
"It was a tough battle but we felt that the way we were playing, once we got ahead we wouldn't lose.
"To be honest it was nice to get one over Swansea. I know what the rivalry is like down there!"
Swansea manager Kenny Jackett:
"The penalty looked a harsh decision, I've watched it again and the contact is minimal.
"If there's going to be penalties for that amount of contact there's going to be six every game.
"That decision was crucial but we'll have to take it on the chin, it is quite hard to swallow at the moment."
Ipswich: Price, Sito, Naylor (Casement 61), Wilnis, Harding, Peters, Legwinski, Williams (Haynes 85), Roberts, Lee, Clarke (Garvan 69).
Subs Not Used: Supple, O'Callaghan.
Booked: Lee, Sito.
Goals: Lee 64 pen.
Swansea: Gueret, Duffy, Iriekpen, Lawrence, Williams (Painter 85), Britton, Tate, Pratley (Trundle 66), Robinson, Butler, Akinfenwa (Abbott 78).
Subs Not Used: Oakes, Jones.
Booked: Pratley, Robinson, Gueret, Williams, Tate, Britton, Duffy.
Ref: N Miller (Co Durham).