Rovers narrowly beaten at Fratton Park.
Ronan Curtis’ goal in the 27th minute separated the sides, as the defeat ended Rovers’ five-year spell in Sky Bet League One.
Curtis curled home the only goal of the contest after the winger was set free down the left by George Byers’ flick.
Rovers went close in the first half through Alex Rodman, as the winger saw an effort from inside the area deflected wide.
During the second half, Luke McCormick tested MacGillivray from range, as Portsmouth preserved their lead.
The loss at Fratton Park confirms Rovers’ relegation to Sky Bet League Two – with a nine gap between the Gas and safety, with only two games remaining.
In the build-up to kick-off at Fratton Park, the Rovers teamsheet included three changes to the side that started Tuesday’s encounter with MK Dons.
James Daly, Zain Westbrooke and Jack Baldwin all returned to the starting XI, replacing Cian Harries, Zain Walker and Jonah Ayunga.
Portsmouth in turn made just the one change, with both former Rovers players, Lee Brown and Ellis Harrison missing out through injury.
Both teams have been on the scoresheet in the previous 5 encounters between the sides and the start of the game at Fratton Park saw both sides have plausible opportunities.
An early ball into the host’s area from a McCormick set-piece was recycled back into the mix by Luke Leahy. The defender’s ball aimed at the congested six-area found Hanlan, who connected with a header but was penalised for a foul.
The home side first opening came via a deflected free-kick from Byers that Jaakkola was able to track all the way into his gloves.
Rovers again threatened from a free-kick, as a routine on the edge of the area saw Martinez coax a delivery into the Portsmouth area. The ball eventually dropped for James Daly, who connected with a volley on the turn that looked set to find the target but was blocked by a defender.
The Gas’ energy saw them deploy a high press, which was effective in rattling the home side in possession on a number of occasions.
Alex Rodman, who was making his second start after a return from injury, went close for Rovers midway through the first-half. The move started down the right, as Williams released the winger with a quickly taken throw. Rodman was able to jinx past his man to break into the area, firing an effort across goal that took a slight deflection that saw the attempt creep wide.
For all Rovers’ work, it was the home side that went ahead, just prior to the half-hour mark. Byers' flick from MacGillivray's quick distribution set Ronan Curtis free down the left, where he was able to advance to the fringes of the Rovers penalty area, where the winger flashed a curling finish into the bottom beyond Jaakkola to give Portsmouth the lead.
Shortly after Curtis’ opening goal, Nicolaisen glanced a towering header wide of the target, after being picked out from a free-kick as the host’s held the lead at the halfway stage.
Early on in the second half, Rovers were able to test MacGillivray, as McCormick’s effort from range forced the Portsmouth ‘keeper into action.
Oztumer was introduced from the bench on the hour mark, replacing Zain Westbrooke.
Rovers possessed a favourable share of the play inside the Portsmouth half as the second half progressed, but couldn’t create any clear cut chances. A George Williams throw from the right shaped a half-chance for the Gas, with James Daly narrowly missing out on a flick at the near post to glance the ball home, as MacGillivray clutched at the delivery.
With 20-minutes to go, McCormick saw a twisting free-kick held by MacGillivray, as Rovers fought to find an equalising goal.
A double switch saw Cam Hargreaves and Zain Walker introduced, with a little over 15 minutes remaining on the clock.
Curtis went close for the home side, nearly doubling both his and Portsmouth’s tally, as a ball over the top swung into the path of the winger. Kilgour was in pursuit of Curtis and held him up, before the Portsmouth man blasted his low effort wide.
Mark Little and Josh Hare were the final substitutes introduced for Rovers, as the pair replaced Alife Kilgour and Pablo Martinez, but Rovers were unable to break level as Portsmouth managed the remaining minutes to secure the win.
Portsmouth: Craig MacGillivray (G), Callum Johnson, Sean Raggett, Rasmus Nicolaisen, Tom Naylor, Ben Close (62’ Andy Cannon), John Marquis, Marcus Harness (78’ James Bolton), Ryan Williams (78’ Charlie Daniels), Ronan Curtis, George Byers (69’ Harvey White).
Subs: Lewis Ward, Charlie Daniels, Harvey White, Alfie Stanley, Andy Cannon, Paul Downing.
Bristol Rovers: Anssi Jaakkola (G), Luke Leahy, Zain Westbrooke (58’ Erhun Oztumer), Brandon Hanlan, Luke McCormick, Alfie Kilgour (83’ Josh Hare), James Daly (73’ Zain Walker), Jack Baldwin, Alex Rodman (73’ Cam Hargreaves), Pablo Martinez (82’ Mark Little), George Williams.
Subs: Joe Day, Mark Little, Cam Hargreaves, Josh Hare, David Tutonda, Zain Walker, Erhun Oztumer.