Peter Crouch's 13th goal of the season and a late clincher from Niko Krancjar saw FA Cup holders Portsmouth dispose of Bristol City and book a place in the fourth round.
The replay win, which followed a 0-0 draw at Fratton Park, also lifted some of the pressure off manager Tony Adams following a string of disappointing results and the sales of Jermain Defoe and Lassa Diarra.
Pompey will now entertain Swansea City in the next round but know that Crouch's 38th-minute strike was also a controversial one as the England man could have been penalised for handball in his own box seconds before.
Krancjar wrapped up victory with a tap-in with two minutes remaining after City were caught on the counter-attack again, and the home side were denied even a consolation goal when David James kept out Nicky Maynard's stoppage-time penalty.
Armand Traore blasted the first shot of the game in the sixth minute and City goalkeeper Adriano Basso had to leap to make a spectacular tip-over.
That was the only highlight for a while as both sides struggled to make creative use of possession but the lead was almost City's in the 24th minute.
That saw midfielder Marvin Elliott connect with a diving header but England goalkeeper James reacted smartly to make an impressive one-handed save.
The game became more of a spectacle after that and Maynard almost gave the Championship side a memorable opener with a 30-yard effort that beat James but also just cleared the crossbar.
Pompey replied immediately with a move that saw David Nugent wastefully hit a post from six yards after Crouch had set him up and it was not long before Traore saw a drive deflected behind for a corner.
City had to soak up the pressure but cleared their lines and won a free-kick in a promising position when Glen Johnson launched a wild challenge on Cole Skuse and was booked.
A corner followed and the ball appeared to hit Crouch on a shoulder and then the other arm in the Portsmouth area as he tried to clear, although there was little in the way of a frenzied appeal by the home players.
Referee Michael Jones allowed play to continue and Nadir Belhadj's superb cross-field ball from the left put Traore away down the other flank.
The Frenchman, who is on loan for the season from Arsenal, got the better of City left-back Liam Fontaine, and set up Crouch, who had run the length of the pitch, in front of goal for a smart finish before any defender could intervene.
Younes Kaboul was booked for throwing the ball away before the break, with City midfielder Lee Johnson also shown a yellow card after the half-time whistle, presumably for complaining about the Crouch incident.
Jamie McCombe headed the first chance of the second half just wide as City tried to take the game to their top-flight opponents.
Crouch should have doubled the visitors' lead however when Kaboul's header gave him a clear sight of goal but somehow he succeeded in trundling his shot harmlessly wide.
Maynard was looking City's most likely source of an equaliser and James had to pull off a spectacular save to keep out the striker's shot on the turn from the edge of the box.
Johnson sent a free header wastefully wide from Ivan Sproule's cross from the right and the City manager's son knew he should have hit the target.
Basso did well to hold on to Traore's shot as Crouch moved in to pounce but the England man failed to hit the target from a good position once again from Pompey's next attack.
Krancjar made it 2-0 with a simple finish after Belhadj had again used his pace on the counter-attack but City's response was to win a penalty at the other end.
Sol Campbell was adjudged to have impeded Maynard but when the striker picked himself up to take the spot-kick James guessed correctly to beat it away.