They fell behind to an early Marcus Browne strike, only for Sean Raggett and George Hirst to both net just before the interval.
A stunning Hayden Carter strike left them cruising after the break, only for Luke McNally’s late goal to ensure a fingernail-chewing finale.
Danny Cowley made five changes from the side that dramatically drew with Fleetwood at the weekend.
Aiden O’Brien was rewarded for his last-gasp leveller from the bench by coming into the starting line-up.
And the forward was joined in the team by Connor Ogilvie, Mahlon Romeo, Louis Thompson and Hirst.
Clark Robertson, Ryan Tunnicliffe and Tyler Walker all dropped to the bench, while Reeco Hackett missed out through injury and Ronan Curtis began a two-match ban.
There were familiar faces in the opposition ranks, as Ryan Williams and Steve Seddon both started, with Simon Eastwood named on the Oxford bench.
For the second time in the matter of days, Pompey were caught napping in the early stages and found themselves behind.
Nathan Holland slipped a pass through to Browne, who showed some neat footwork before angling home a fierce shot.
The hosts tried to hit back and began to dominate possession, without making a breakthrough in the final third.
And the Blues were growing increasingly frustrated at the amount of time their opponents were taking over every set-piece.
They kept persevering, although it looked like the interval would arrive without Jack Stevens having to make a meaningful touch between the sticks.
But Pompey found themselves level late in the first half after Denver Hume played the ball across the edge of the box.
It was collected by Joe Morrell and he lifted a cross into the centre, where RAGGETT rose to power home a fine header.
And it got even better in stoppage-time, as HIRST timed his run perfectly to collect a Marcus Harness pass and coolly slotted the ball into the bottom corner.
Oxford United 1
The visitors felt they should have had a penalty shortly after the restart, as Matty Taylor went down under Thompson’s challenge, but their appeals received short shrift from referee Sam Allison.
Pompey took some time to find their feet again, but extended their lead thanks to a superb strike on 58 minutes.
Oxford could only clear the ball as far as CARTER, who saw plenty of space in front of him to take a couple of touches before firing home an unstoppable 25-yard strike.
The lead was now comfortable, but the points were certainly not guaranteed and Gavin Bazunu got down sharply to his left when Sam Long hooked the ball towards the bottom corner.
Cowley made a switch to add some fresh defensive legs on 73 minutes, as Hume made way for Robertson.
And they almost wrapped things up moments later, when Hirst got on the end of O’Brien’s cross with a firm header that Stevens somehow kept out from point-blank range.
Another change immediately followed, with Harness withdrawn and Tunnicliffe handed an opportunity to impress in the closing stages.
It was looking like being a comfortable conclusion to the evening, but Oxford threw a spanner in the works.
With just under 10 minutes remaining, Sam Baldock cut the ball back for McNally to fire home and ensure a nervy conclusion.
But, backed by a noisy Fratton faithful, the Blues managed to see out the closing stages to put another three points on the board.
Pompey (3-4-3): Bazunu; Carter, Raggett (c), Ogilvie; Romeo, Morrell, Thompson, Hume (Robertson 73); Harness (Tunnicliffe 75), Hirst (Walker 84), O’Brien
Goals: Raggett 42, Hirst 45+2, Carter 58
Subs not used: Webber, Vincent, Jewitt-White, Mingi
Oxford (3-4-1-2): Stevens; McNally, Long, Brown; Williams, Kane, Brannagan (c), Seddon (Whyte 64); Holland (Forde 82); Browne (Baldock 64), Taylor
Goals: Browne 3, McNally 81
Subs not used: Eastwood, Mousinho, McGuane, Henry
Referee: Sam Allison
Attendance: 15,113 (1,370 away fans)