Brice Samba was the hero for Nottingham Forest as they booked their place at Wembley in the Championship play-offs final.
Sheffield United produced a stirring display on the night, against an off-colour Reds side. They drew the tie level by winning 2-1 at the City Ground, to make it 3-3 on aggregate and take it to penalties.
Samba had already produced some big saves, and did so again to ensure his team won 3-2 on penalties.
Read more: Re-live the action from the City Ground
Read more: Riverside views and St Andrew's sadness mark out best and worst Forest away days
Amid a fevered atmosphere, it was a nervy start by the hosts as they took their time to settle. And it was almost first blood to United on the night.
John Egan headed a good chance wide from a Jack Robinson long throw, before Brice Samba was called into action. The Reds stopper made a terrific save to keep out Iliman Ndiaye as he went to meet Morgan Gibbs-White’s square ball, with Steve Cook mopping up afterwards.
Just when the visitors thought they might get a foothold, though, up popped Johnson with the breakthrough. And what a finish it was.
Scott McKenna started the move, playing a fabulous long ball down the channel for Sam Surridge to chase. The Wales international bust a gut to make sure he was in the centre to meet the cross, and he thumped it home for a 1-0 lead on the night and 3-1 on aggregate.
That got the crowd off their feet and gave Forest the lift they needed. Surridge then had an effort blocked and James Garner bent a shot wide as Cooper’s side looked to press home the advantage.
It was a breathless, end-to-end 45 minutes. Not without a bit of spice, either.
Johnson got clattered into more than once, with little protection from referee Michael Oliver. And Blades boss Paul Heckingbottom was shown a yellow card for shoving the ball into the stomach of Djed Spence as he went to take a throw-in. That sparked a melee on the pitch as frustrations spilled over.
Cooper kept his players back at half-time, allowing United to head down the tunnel first, to avoid any trouble. The half had ended with Oliver Norwood sending a dipping strike just over the bar.
If anyone thought the semi-final might be over, a nightmare start to the second half for the Reds offered a stark reminder. Just two minutes in, Gibbs-White diverted home from close range, following Sander Berge’s pull-back. Suddenly, it was game on.
Forest had to weather a storm as the Blades pressed to level the tie. They did just that with 15 minutes to go, John Fleck finishing from a few yards out to go 2-1 up and make it 3-3 on aggregate.
Cook and Garner sent headers over in the closing minutes, while the latter had a shot deflected behind. But with the scores all-square, it went to extra-time.
The first chance went to the hosts, with Keinan Davis poking Johnson’s cross into the arms of Wes Foderingham, following good work by fellow substitute Joe Lolley. It was a tense, nervy 15 minutes, though.
The Reds started the second period on the front foot. Lolley lost his footing at the key moment when meeting a Johnson cross, then the latter sent an acrobatic effort straight at Foderingham.
Samba made an incredible save to deny Ndiaye for the second time on the night and keep his team in it. And that meant it went down to penalties.
Johnson, Cafu and Cook all scored for the hosts. And though Lolley sent his over the bar, Samba had saved from Oliver Norwood and Conor Hourihane. Sander Berge scored for the visitors, but Samba denied Gibbs-White’s decisive kick to keep Forest’s promotion dream alive on a dramatic night. Here’s how Reds reporter Sarah Clapson rated the Forest players at Bramall Lane.
Brice Samba: Made two simply brilliant saves to keep out Iliman Ndiaye. The hero of the hour in the penalty shoot-out. Rating: 9/10
Joe Worrall: Rallied the troops, but usual calmness on the ball went missing at times, just when Forest needed it most. Rating: 7/10
Steve Cook: Went in where it hurt on a number of occasions, putting in some big challenges. Celebrated his penalty with a mighty roar. Rating: 8/10
Scott McKenna: Heck of a pass to set Surridge on the way for the opener. Battled throughout, digging in when he needed to. Rating: 8/10
Djed Spence: Did well to keep his cool when provoked by Paul Heckingbottom. The visitors did a better job of keeping him quiet for the most part, compared to Saturday. Rating: 7.5/10
James Garner: Midfield as a whole struggled to get to grips, in the second half especially. Couldn’t quite get his set-pieces right on a difficult night. Rating: 7/10
Ryan Yates: Battled through the pain barrier once again, doing his best to gee the fans up. A tough evening, when he really had to scrap. Rating: 7/10
Jack Colback: Not quite his usual reliable self defensively, with a few uncharacteristic slips. Picked himself up to keep going, though. Rating: 7/10
Philip Zinckernagel: Left everything out there. Plenty of heart and desire, urging the crowd to up the noise levels even further as the hosts tried to relieve some pressure. Rating: 7.5/10
Brennan Johnson: Another terrific finish for his 19th of the season. Needed more protection from the referee as he got kicked from pillar to post all evening. Rating: 8/10
Sam Surridge: Set Johnson up nicely - and that should have made for a more comfortable evening than what transpired. The ball just wouldn’t stick in the second half. Rating: 7.5/10
Subs
Joe Lolley (for Zinckernagel, 70mins): Made some good runs. Won’t want to re-live his penalty in a hurry. Rating: 7/10
Keinan Davis (for Surridge, 75mins): Made a real difference when he came on. Caused the visitors problems. Rating: 8/10
Cafu (for Garner, 119mins): Terrific penalty. Played his part on a dramatic night. Rating: 7/10
Subs not used: Horvath, Figueiredo, Laryea, Mighten.