Nigeria striker John Utaka gave Portsmouth a much-needed boost following another turbulent week at Fratton Park, as Pompey edged out Sunderland 2-1.
Utaka scored in each half as the home side overturned an early Darren Bent goal to earn a place in the fifth round with a plucky performance in difficult conditions.
Avram Grant might not even have selected Utaka had he not lost four players to the Africa Cup of Nations and been beset by injuries.
Grant was able to name only five substitutes and one of those was unknown academy rookie Lennard Sowah.
Sunderland took the lead in the 15th minute when Bent took advantage of hesitation by Anthony Vanden Borre to prod a Kenwyne Jones flick-on past Asmir Begovic from 12 yards.
Portsmouth levelled in the 42nd minute when a long, hopeful ball out of defence by Mark Wilson to the corner of the Sunderland box was headed over an onrushing Craig Gordon by Utaka and the keeper could only watch as the ball trickled home.
Two Portsmouth fans ran on to the pitch in the first half to continue a pre-match protest in which some 300 fans marched to the ground from the city centre, registering their dissatisfaction at the club's desperate financial state.
The anger was temporarily dissipated by Utaka's second after 57 minutes, racing clear on to a headed clearance by Younes Kaboul.
Utaka, who was also booked in a first-half clash with Kieron Richardson, might have a hat-trick, but his stinging 20-yard drive was denied by a smart low save from Gordon.
There was still time for late drama, as first Begovic denied Bent a second, acrobatically tipping over a 20-yard free-kick, before Paulo Da Silva's header from the resulting corner was desperately hacked from the line by Kevin-Prince Boateng.
But the goal was not to come as Portsmouth held on in front of a crowd of just 10,315, who celebrated the win with as much elation as they did at Wembley in the same competition two years ago.