Luke Varney was next to come close for Portsmouth after 23 minutes, but he smashed the post from inside the box.
Portsmouth did move into the lead, however, after 32 minutes when Scott Allan struck a 30-yard effort into the bottom corner.
Chris Martin might almost brought Palace back into proceedings moments into the second period, but his effort from close range drifted wide.
Portsmouth moved into a 2-0 lead, however, after 55 minutes when Greg Halford headed an Allan cross into the net.
Palace did find a way back into the match after 70 minutes when Darren Ambrose slotted home a penalty after Varney felled Zaha in the area.
Ambrose came close to levelling the score five minutes before the end of time, but Portsmouth held on to secure a vital three points.