Scott Allan’s deflected effort in the first half, his first goal for the club, and Greg Halford’s header after the break gave Michael Appleton’s side back-to-back triumphs.
Tuesday night’s victory ensures Pompey can still avoid dropping into the third tier of English football for the first time since 1983 as fellow strugglers Bristol City only drew with West Ham.
The Eagles began the evening brighter but, after Luke Varney had hit a post, Allan’s effort struck Nathaniel Clyne and left Julian Speroni stranded to give the hosts a 32nd-minute lead.
Then, 10 minutes after the interval, Allan whipped in the corner which Halford nodded in from the edge of the six-yard box.
Substitute Darren Ambrose slammed home a 70th-minute penalty after the lively Wilfried Zaha had been felled but the hosts held on to fight another day.
Pompey, whose chances of survival were rated at “500-1” by Appleton following Saturday’s last-gasp win over Doncaster, remain five points adrift of safety with two games remaining.
The south coast club kicked off knowing nothing but a victory would suffice but they played like a side consigned to relegation in the opening exchanges.
The Football League’s Young Player of the Year Zaha drew a smart stop from home goalkeeper Jamie Ashdown before going close again with an effort which went over the bar.
Dave Kitson, starting a Portsmouth game for the first time since February, headed over before Palace’s Antonio Pedroza lifted an effort beyond Ashdown but also over the crossbar.
But Pompey hit back and after Varney clipped a post, Allan struck an unlikely opener.
His speculative effort took a huge deflection off Clyne which completely wrong-footed Palace stopper Speroni.
Chris Maguire nearly doubled their advantage before the break, darting past Dean Moxey before hitting a fierce effort just wide.
Palace almost hit back early in the second period but Pedroza’s close-range flick was pushed away by Ashdown.
But it was the hosts who doubled their advantage when Allan’s corner came to Halford at the back post, and he headed in from close range to follow up his brace against Doncaster with another goal.
Palace threw on Ambrose and he was called upon to take a spot-kick after Zaha drove into the area before Varney hauled him down.
The midfielder promptly lashed his penalty straight down the middle to increase the anxiety at Fratton Park.
Ambrose came close to an equaliser with two trademark tries from long range which both whistled narrowly wide.
With time running out, Palace did have the ball in the net but Patrick McCarthy was adjudged to have fouled Ashdown before he applied the finish.
Maguire could have calmed the home supporters’ nerves after rounding Speroni but his shot was scrambled off the line.