Slavisa Jokanovic’s side were swashbuckling and Scott Parker’s men are streetwise. They might have reached Wembley in contrasting styles but the end result is still the same – Fulham are into the Championship play-off final and stand ninety minutes away from a return to the top flight.

Parker’s side had to survive an almighty scare after Cardiff City grabbed an early goal at Craven Cottage to make their comfortable cushion after Monday’s 2-0 win in Wales look pretty precarious and when Lee Tomlin thumped home seconds after stepping off the bench at half-time, Fulham’s very participation in Tuesday’s final, against near neighbours Brentford, appeared to be in serious jeopardy. But Parker has made his team much more gritty during his first season in charge – and Fulham’s fortitude come to the fore as they rebuffed a succession of Bluebirds’ attacks in the closing stages.

It was never likely to be plain sailing on the banks of the Thames, especially given the enormity of the prize on offer. Cardiff, who were aiming to make play-off history by becoming the first side to overturn a two-goal deficit in a Championship semi-final, knew they needed to strike first – and they did, albeit in controversial circumstances. Marek Rodak felt he had been impeded by Danny Ward, preventing him for coming to collect Joe Ralls’ corner before Curtis Nelson nodded in at the back post. Referee Paul Tierney disagreed – and the goal stood.

Fulham’s anger evaporated after 24 seconds. That’s how long it took for the hosts to fashion the perfect riposte. Bobby Decordova-Reid, again deployed as a false nine against his old side as Aleksandar Mitrovic rested his sore hamstring, sauntered down the right and delivered the perfect cross for Neeskens Kebano to roll home his fourth goal in as many matches from twelve yards. That spirited response galvanised the home side, but try as they might, they couldn’t find another goal before half-time to put the tie beyond the visitors.

Alex Smithies, who was once again excellent in the Cardiff goal, produced smart saves to keep out efforts from Cyrus Christie and Anthony Knockaert at his near post, whilst the French winger also saw an effort deflected narrowly over the crossbar. Kebano wasn’t fit to continue past the break, with Aboubakar Kamara replacing the Congolese winger, who had an ice pack applied to his hamstring for much of the second half.

It was Cardiff’s half-time changes that proved more consequential, however. Two minutes after the break, two substitutes made telling contributions from a Will Vaulks long throw-in to reduce the arrears to one once more. Nathaniel Mendez-Laing capitalised on some hesitation to power a header goalwards and, although Rodak did well to keep it out, Michael Hector missed his chance to clear and Tomlin powered home the rebound from close range.

The pair were at it again a couple of minutes later. They linked up beautifully down the right and an untimely slip from Christie gave Josh Murphy a glorious sight of goal, but he opted to use his head instead of bringing the ball down, and Rodak gratefully plucked the ball out of the air. Leandro Bacuno then crafted a delicious cross that narrowly eluded Danny Ward. By now, Fulham, who had been dominating the ball during the first half, looked decidedly jittery and capable of collapsing before the finishing line.

Tom Cairney did his bit to restore some order, producing a mesmerising run from wide on the left to the edge of the box before he was cynically upended by Sean Morrsion. Cairney was on the ground again seconds later, having slipped as he tried to send the free-kick goalwards, but Abouakar Kamara picked up the baton – charging forward in his unique fashion to draw two stunning saves from Smithies in quick succession. He flew past Bacuno and the former QPR goalkeeper had to be alert at his near post and then Smithies somehow tipped a piledriver onto the woodwork from just outside the box.

The remainder of the drama came at the other end as Cardiff pushed for a third that would have taken the tie into extra time. They were indebted to Rodak for a sensational double save in the midst of a mad goalmouth scramble with eighteen minutes to go. Robert Glatzel, on as a substitute, almost scored with his first touch – with Rodak somehow blocking his deft flick from Ralls’ set piece. In the aftermath, Christie put his body in the way of efforts from Mendez-Laing and Nelson, before Rodak hauled himself off the floor to turn away Vaulks’ venomous volley that was heading for the top corner.

Cardiff kept searching for their leveller, even after Tomlin was forced off when he aggravated his troublesome hamstring, and Glatzel spurned their best chance to dash Fulham’s dreams deep into stoppage time. Callum Paterson climbed highest to glance a long free-kick into Glatzel’s path and, although the German forward got great contact on his effort, it was always rising over Rodak’s crossbar.

This wasn’t vintage Fulham, but that didn’t matter. Parker’s side have shown determined and significant staying power to keep their promotion hopes alive in a season where they often looked out of the race. Here was another example. Unlike that glorious night against Derby a couple of years ago, relief rather than ecstasy was the prevailing emotion at full-time. A backs-to-the-wall effort secured a shot at glory, against our local rivals, at the home of football. Parker will know his side will need to show more quality at Wembley – but he can be confident of their stomach for the fight.

FULHAM (4-3-3): Rodak; Christie, Bryan (Le Marchand 90), Hector, Ream; Reed, Cairney, Onomah; Knockaert (Odoi 76), Kebano (Kamara 45), Decordova-Reid. Subs (not used): Bettinelli, Mawson, McDonald, Johansen, Cavaleiro.

BOOKED: Decordova-Reid, Rodak, Christie, Onomah.

GOAL: Kebano (9).

CARDIFF CITY (4-2-3-1): Smithies; Bacuno, Bennett, Morrison, Nelson; Pack (Tomlin 45; Whyte 83), Vaulks; Murphy, Hoilett (Mendez-Laing 45), Ralls; Ward (Glatzel 71). Subs (not used): Etheridge, Bamba, Sanderson, Smith.

BOOKED: Morrison, Bacuna, Vaulks, Ralls.

GOALS: Nelson (8), Tomlin (47).

REFEREE: Paul Tierney (Lancashire).