Fulham 1 Cardiff 2
(Fulham win 3-2 on aggregate)
Fulham will play Brentford at Wembley in the Championship play-off final after holding off a fierce second-leg challenge from Cardiff.
Another goal from Neeskens Kebano was enough for Fulham, who will face the Bees in an all-West London battle for a place in the Premier League.
The Whites were again without Championship golden boot winner Aleksandar Mitrović as he recovers from a hamstring injury.
But they progressed despite having their eight-match unbeaten streak snapped.
They found themselves behind on the night after eight minutes, as Curtis Nelson rose highest to head in from a corner that resulted from one of Will Vaulks’ long throws, which was a threat for the home side throughout.
But Kebano hit back just 24 seconds later with his fifth goal in four matches, nipping in ahead of Leandro Bacuna to stab home following good work from Bobby Decordova-Reid and Josh Onomah down the right.
Fulham regained some control of the game after the drinks break and should have added to their tally – Anthony Knockaert forcing a good save from goalkeeper Alex Smithies and going close again in first-half stoppage time.
Another Vaulks throw-in two minutes after the restart caused havoc in the Fulham box though, and substitute Lee Tomlin smashed home a rebound from close range to bring the Bluebirds to within one goal on aggregate.
It gave them a lift as Scott Parker’s side started to look nervy and the game became stretched through much of the second half.
Chances came and went from the bright Aboubakar Kamara, who came on for Kebano at half-time and struck the inside of the post with a rasping shot.
At the other end, a goal-line stop by Cyrus Christie followed by a stunning Marek Rodak save from Vaulks kept the Whites’ slender overall lead intact.
But, after Robert Glatzel blazed over in the dying seconds, Fulham weathered a tense finish to hold on and reach Wembley for the second time in three seasons as they look for an immediate return to the top flight.
Fulham: Rodak, Christie, Hector, Ream, Bryan (Le Marchand 90), Reed, Cairney, Onomah, Knockaert (Odoi 76), Kebano (Kamara 46), Decordova-Reid.