Pompey took the lead at Fratton Park for the first time since they beat Shrewsbury 3-1 on October 20 when Paul Benson converted Scott Allan's cross after 10 minutes.
The visitors missed a golden opportunity to equalise when Hope Akpan headed Nicky Adams' cross straight at Pompey goalkeeper Simon Eastwood after 26 minutes.
But the Red Devils got back on level terms two minutes later when Mat Sadler's free-kick from the right-hand side evaded the home defence and drifted into the bottom corner of the net.
Crawley snatched victory after 73 minutes when Adams whipped in a wicked ball from the left and Billy Clarke fired home from three yards out.
Pompey substitute Lee Williamson had the ball in the net with a minute left but referee Roger East had already blown his whistle for a free-kick to the visitors.
Crawley goalkeeper Paul Jones produced a brilliant save to tip over Darel Russell's flicked header in the third minute of stoppage time.