Ipswich started the game well and had a great chance to open the scoring when Kasey McAteer was slipped in down the right and found George Hirst in the box, but his shot ended up being blocked behind for a corner.
The Blues had a brilliant effort well saved just before the half-hour mark when Millenic Ali let fly from 25 yards with a thunderous right-footed effort that had to be tipped over the bar by Town keeper Christian Walton.
The home side were rewarded for a strong end to the first half as Shaughnessy headed the ball home from an Adrian Segecic corner to give his side the lead.
Just two minutes later that advantage was doubled as Portsmouth surged forward in attack. Swift had an attempt saved from close range, but it only fell as far as Bishop who was on hand to slot the ball home.
The goal was just his fourth of the season and first since netting a penalty against Charlton in the middle of February.
Segecic should have added a third for Portsmouth just before the hour mark as Alli dinked a ball towards him in the box but his diving header was pushed wide of the far post.
Ipswich substitute Anis Mehmeti went close with less than 20 minutes to go when he drove towards the box and into space but dragged an effort wide of the left-hand post.
The visitors pushed for a goal in the final moments of the game, with chances for Hirst and Jaden Philogene, but the match and result belonged to the home side, whose supporters were on their feet and singing to the tune of ‘The Great Escape’ as they moved closer to safety.
This game was postponed twice previously when the Blues had a frozen pitch in January and after heavy rainfall in February.
