Oxford United 1
Pompey lost ground on the automatic promotion places with a 1-0 home defeat to Oxford.
Jordan Bowery came off the bench to score the only goal of the game late on at a packed Fratton Park.
Goalkeeper Ryan Fulton had earlier conceded and then saved a penalty in a memorable debut for the teenager.
The Blues’ best chance came before the break when Marc McNulty’s effort was cleared off the line.
Paul Cook made two changes from the side that knocked Ipswich out of the FA Cup earlier in the week.
Fulton was thrown straight into the side after completing his loan switch from Liverpool the previous day.
He replaced the injured Brian Murphy in goal, while Christian Burgess made way for Matt Clarke in defence.
Oxford, meanwhile, were without former Fratton striker Ryan Taylor, with ex-Pompey boss Michael Appleton moving top scorer Kemar Roofe up front.
The game began at a frantic pace and continued in that vein for the rest of the first half.
But the Fratton faithful were not happy with a number of decisions by Neil Swarbrick and gave the referee a standing ovation when he finally awarded their side a free-kick.
The visitors looked an attacking threat, although Fulton was not being overworked on his debut.
He did, however, have to come charging out of his box on 16 minutes to beat Danny Hylton to the ball.
Johnny Mullins and Roofe both headed over from set-pieces, while George Baldock fired a shot into the side netting.
But it was the Blues who almost broke the deadlock on 19 minutes after Gary Roberts and McNulty traded clever passes inside the box.
The latter then controlled the ball neatly before firing in a shot that Jake Wright had to clear from the line.
Kyle Bennett also came close with a 20-yard free-kick that was deflected narrowly over the crossbar.
The game was still being played at a breathtaking speed as the interval drew nearer, but the closest Oxford came to a goal was when Liam Sercombe drilled wide.
Oxford United 0
The pace did not let up following the restart and United were given a chance to forge ahead on 51 minutes.
Hylton burst into the box and Fulton caught the striker as he tried to beat him to the ball, with Swarbrick immediately pointing to the spot.
But the keeper went from villain to hero, diving to his right to save Sercombe’s penalty and then brilliantly recovering to stop him converting the loose ball.
Cook made his first substitution soon after, with Adam Barton making way for Ben Close in midfield.
Pompey then won a couple of corners, with Ben Davies’ delivery for the second just too high for Adam Webster at the far post.
Cook injected a fresh attacking impetus into his side on 63 minutes, as Adam McGurk came on for Roberts.
It was Close who lined up a long-range drive moments later, however, only to see his shot blocked before it could reach the goal.
The Blues were now on top, but Roofe caused concern at the other end when he swung in a free-kick from wide on the left that somehow evaded everyone on its way out of play.
And it was Oxford who took the lead on 76 minutes when Bowery collected Wright’s long ball forward and guided a shot into the bottom corner.
Cook made one last throw of the dice by bringing on Conor Chaplin in place of McNulty in Pompey’s attack.
But it was McGurk who came closest to grabbing an equaliser, only to guide his header straight into the arms of United keeper Sam Slocombe.
Pompey (4-2-3-1): Fulton; Davies, Webster, Clarke, Stevens; Barton (Close 54), Doyle (c); Evans, Roberts (McGurk 63), Bennett; McNulty (Chaplin 82)
Subs not used: Jones, Burgess, Tollitt, Naismith
Oxford (4-4-2): Slocombe; Baldock, Mullins, Wright (c), Skarz; MacDonald (Bowery 69), Lundstram, Sercombe, O’Dowda (Evans 82); Hylton (Hoban 88), Roofe
Goals: Bowery 76
Subs not used: Buchel, Long, Dunkley, Ruffels
Referee: Neil Swarbrick