Fulham advanced to next week's Championship playoff final despite a 2-1 home loss to Cardiff City on Thursday after edging past their opponents 3-2 on aggregate.
They will face local rivals Brentford, who beat Swansea City by the same aggregate score after Wednesday's 3-1 victory, in an all south-west London final at Wembley next week (stream live on ESPN+ in the U.S.)
- Replay: Fulham hang on to beat Cardiff
- Stream ESPN FC Daily on ESPN+ (U.S. only)
- Stream Prem promotion final on ESPN+
In a furious start, Cardiff, who had lost the first leg 2-0, stunned the hosts after eight minutes with centre-back Curtis Nelson's header.
But Fulham struck back 24 seconds after the restart, snatching an equaliser through Neeskens Kebano to restore their two-goal advantage in the tie.
After conceding possession to Fulham for the rest of the first half, substitute Lee Tomlin put Cardiff back in front two minutes after the restart to set up a tense second half.
Cardiff keeper Alex Smithies kept his team in the game on several occasions with a string of superb saves, including tipping a Aboubakar Kamara shot onto the post in the 68th minute.
But despite late Cardiff pressure for a goal that would have sent the game into extra time, Fulham hung on to earn the chance to return to the Premier League after one season in the second tier.
"It wasn't pretty at all. It was the worst start you can think of," Fulham captain Tom Cairney told Sky. "These 2-0 leads are a bit weird in your head. It feels comfortable but is not at the same time.
"We let ourselves down by not playing our normal game, and we invited pressure. But in the second half we dug in deep we got over the line."
Fulham, who had finished one place above Cardiff in the final Championship table, last won a Championship playoff final two years ago, beating Aston Villa 1-0 at Wembley to earn promotion.
Brentford are looking to earn a spot in the top division for the first time in 73 years as they prepare to move to their new Brentford Community Stadium home for the 2020-21 campaign.