Marcus Harness had given the Blues a second leg advantage, only for an unfortunate Ellis Harrison own-goal to level the tie.
Extra-time failed to find a winner and so it headed to a shoot-out, with Cameron McGeehan’s miss proving decisive.
Kenny Jackett made three changes from the side that drew at Fratton Park just three days earlier.
Steve Seddon and James Bolton returned to the full-back berths, while Ryan Williams was handed an attacking wide role.
That saw Lee Brown, Ross McCrorie and Andy Cannon drop to the bench, with Christian Burgess claiming the captain’s armband.
As in the first leg, there was a minute of applause in recognition of the NHS and other key workers, while players then took the knee to show opposition to racism.
The hosts were first to threaten, but Alex Bass got down to keep out an early effort from Jamie Mackie.
Pompey, meanwhile, looked bright going forward, although their attacks often broke down before former Fratton stopper Simon Eastwood could be tested.
There was one perfectly-timed challenge inside the box to stop the energetic Williams collecting a threaded Harness pass.
Williams then swung in a dangerous left-footed cross that Bryn Morris was not quite able to guide on target.
Harrison thought he received a shove in the box from Elliott Moore following the mid-half drinks break.
But referee Darren England did not agree with that assessment, while a follow-up effort from McGeehan was blocked.
The visitors finally forced Eastwood into action on 36 minutes, with a decent stop preventing Harrison converting a low Williams delivery.
Bass denied Marcus Browne at the other end – just seconds before a route-one move saw the Blues break the deadlock.
The keeper’s long punt up the pitch was flicked on by Harrison, with HARNESS collecting the ball, spinning sharply and slotting a shot into the bottom corner.
It looked like Pompey would take that lead into the break, only for some sloppy play to allow Oxford to level right on the stroke of half-time.
James Henry’s corner caused problems in the box and Harrison inadvertently flicked the ball towards his own net.
Sean Raggett tried frantically to hack clear, but after a quick check of his watch, the referee signalled that it had crossed the line.
Oxford United 1
The hosts were quicker from the blocks once the action restarted and their opponents had to deal with some tricky balls into the box.
They were unable to make the most of their control of possession, though, with a Henry effort that flew over the bar summing things up.
And frustration boiled over when Sam Long fouled Ronan Curtis, with pushing and showing ensuing and the United defender shown a yellow card.
Curtis soon curled a free-kick off target and Jackett then decided to make a double switch on the hour mark.
It was Harrison and Seddon who made their way from the pitch, with John Marquis and Lee Brown on to replace them.
But Marquis’ first contribution was a foul on Oxford skipper Rob Dickie that saw his name added to England’s book.
The striker came close to restoring the visitors’ advantage following the drinks break, though, when he headed a Curtis cross against the post.
Harness then attempted an ambitious curling effort that did not quite have enough dip to send the ball under the crossbar.
That was his last piece of meaningful involvement in the contest, with Cannon replacing him on 81 minutes.
But it was Oxford substitute Dan Agyei who came close to a late winner, embarking on a persistent run before eventually being forced to fire wide by Brown.
The hosts also threatened from a free-kick and corner in stoppage-time, but 180 minutes of action ended with the sides all square at 2-2 on aggregate.
Full Time: Oxford 1 Pompey 1 (2-2)
An early extra-time Pompey chance saw Curtis send a free-kick over the bar after Dickie had been shown a yellow card for bringing down Marquis.
There were set-piece opportunities for the visitors, although a couple of Brown deliveries were dealt with.
But there was then a scramble at the opposite end, with Burgess forced to make a key block amidst a sea of bodies.
Pompey’s players were furious when Cannon was the victim of a meaty Alex Gorrin challenge, but England decided it only warranted a booking.
There were more frayed tempers after a brief interval when Matty Taylor was booked for catching McGeehan late.
Marquis then had a chance to put Pompey back into the lead, but could only nod an excellent Brown cross wide at the back post.
Hawkins replaced Williams for the closing stages and when he chased down Eastwood, the keeper’s clearance ricocheted against the substitute and flew wide.
But the sides could still not be separated and that ensured a mammoth play-off tie would be heading for penalties
After Extra Time: Oxford 1 Pompey 1 (2-2)
There were some impressive penalties from both sides, with Marquis, Gareth Evans – on as a late substitute – and Brown all finding the net.
But Eastwood went the right way to keep out McGeehan’s effort and although Hawkins hit the target, Oxford scored all five of their attempts.
It was Cameron Brannagan who converted the last of them to ensure it would be United who are heading to Wembley.
Pompey (4-2-3-1): Bass; Bolton (Evans 120+1), Burgess (c), Raggett, Seddon (Brown 60); Morris, McGeehan; Williams (Hawkins 114), Harness (Cannon 81), Curtis; Harrison (Marquis 60)
Goals: Harness 38
Booked: Marquis, Curtis
Subs not used: MacGillivray, McCrorie, Downing, Naylor
Oxford (4-1-4-1): Eastwood; Long (Woodburn 120), Dickie (c), Moore, Ruffels; Gorrin (Mousinho 120); Sykes (Hanson 85), Henry (Forde 100), Brannagan, Browne (Agyei 85); Mackie (Taylor 63)
Goals: Harrison 45+3 (og)
Booked: Long, Browne, Dickie, Gorrin, Taylor
Subs not used: Stevens, Atkinson, Kelly
Referee: Darren England