Sunderland scraped through to the Sky Bet League One play-off final after grinding out a goalless draw with Portsmouth in a feisty encounter at Fratton Park.
The south coast stalemate saw the Black Cats progress to Wembley 1-0 on aggregate to keep alive their hopes of an immediate return to the Championship.
Chris Maguire’s thunderous first-leg volley proved decisive, setting up a clash with either Charlton or Doncaster on May 26.
Pompey had chances to mount a comeback, with Gareth Evans particularly wasteful, and now face an eighth successive season outside the top two divisions.
It was the fifth meeting of the two clubs this season, including March’s memorable Checkatrade Trophy final at Wembley which Pompey edged on penalties in front of 85,000 supporters.
Maguire’s solitary goal at the Stadium of Light on Saturday meant the visitors began the evening with a slightly better chance of being the side to return to the national stadium.
Additional security was in place for the clash after threats to kill spectators were made on social media.
A 22-year-old man from Northallerton was arrested by police during the early hours of Thursday morning in connection with a series of Twitter posts which referred to the Manchester Arena bombing.
After an emotional minute’s applause in honour of former Pompey player Jon Gittens who died on Saturday aged 55, the sold-out crowd created a boisterous atmosphere, enhanced by a fractious opening period.
Portsmouth winger Evans was booked after catching Lee Cattermole with a high boot, before team-mate Tom Naylor escaped with only a yellow card having thrown the ball at Maguire’s head.
Maguire appeared content to play the part of pantomime villain and, after collecting a caution of his own, he threatened to double the Black Cats’ aggregate lead with 36 minutes played.
Grant Leadbitter’s raking pass sent the Scottish winger through but he slipped after lifting the ball over Portsmouth goalkeeper Craig Macgillivary, allowing Christian Burgess to clear.
Pompey responded and should have levelled the tie before the break.
After Oli Hawkins knocked down Lee Brown’s cross, Evans somehow headed straight at Sunderland keeper Jon McLaughlin with the goal gaping, before Matt Clarke headed into the turf and against the crossbar from the resulting corner.
While there was plenty of desire on display, the contest severely lacked quality.
In a bid to change that, Pompey boss Kenny Jackett threw on 17-goal top scorer Jamal Lowe eight minutes into the second period.
The substitution lifted the home support and moments later McLaughlin had to be alert to tip over a Watkins header.
Sunderland midfielder Lee Cattermole then became embroiled in an argument with a section of Pompey supporters after Luke O’Nien fell over the advertising boards and into the crowd where he appeared to get tangled with them.
Pompey were running out of time and ex-Sunderland striker James Vaughan almost found a way past McLaughlin with his first touch after replacing Hawkins, while Alim Ozturk escaped penalty claims after grappling in the box with Clarke.
Despite six minutes of added time, the hosts created little else and a season which promised so much ended in disappointment as Jack Ross’ side resiliently held on.