Long grabbed two first-half goals for Brian McDermott's side to see off Pompey - who had Ricardo Rocha sent off before the break.
The hosts took the lead moments later in the 30th minute. Pompey had a corner which was headed clear for Jimmy Kebe to burst away on the break down the left wing.
He cut inside before picking out Jem Karacan bursting up the middle. The midfielder then played in Long just outside the area and the Republic of Ireland man kept his cool to blast home his 21st goal of the season.
And Long doubled the lead seven minutes later to take his tally for the club to 51. Brian Howard released Long over the top with a chipped pass and as he burst into the area the striker went down under a challenge from Rocha who was shown a straight red card by referee Kevin Friend.
Long stepped up confidently to beat Jamie Ashdown from the spot and put the hosts in control.
Source: PA
Source: PA