Match ends, Cardiff City 0, Fulham 2.
Fulham thoroughly outplayed Cardiff City and scored two brilliant first-leg goals to take total control of their Championship play-off semi-final.
An evenly contested first half saw the hosts twice go close to taking the lead before Fulham captain Tom Cairney clipped the post with a curling long-range effort.
Josh Onomah then produced a moment of magic early in the second half, dancing his way past three statuesque Cardiff defenders before firing into the bottom corner.
Fulham were utterly dominant from that point, controlling possession to such an extent that Cardiff barely got a whiff of the ball, before Neeskens Kebano added a second in injury time with a beautiful free-kick.
That was the least Scott Parker's side deserved, and a place at Wembley is now within touching distance ahead of Thursday's second leg at Craven Cottage.
As for Cardiff, they will need to summon every bit of the spirit which has seen them fight back from several trying situations under Neil Harris this season if they are to have any hope of setting up an all-Welsh final against rivals Swansea City, who lead Brentford 1-0 in the other semi-final.
The Bluebirds are not quite out of contention but there can be no doubt that Fulham have seized control in the battle between two sides aiming for an instant return to the Premier League.
Fulham in the driving seat
Despite missing out on automatic promotion, Fulham had gathered momentum towards the end of the regular season with a seven-match unbeaten run.
Having finished fourth in the table, eight points ahead of Cardiff, Parker's team were regarded by many - including Harris - as the favourites for this tie.
However, they were dealt a blow before kick-off when the Championship's top scorer Aleksandar Mitrovic was ruled out with what Parker described as a "slight problem" which he hopes will not keep him out for the second leg.
Fulham had won each of their three games during Mitrovic's recent suspension but, in his absence on this occasion, their attacks initially lacked a focal point.
For all the visitors' early long spells of possession, they offered little in the way of cutting edge until the final few minutes of the first half.
Onomah had their first effort on target, sliding in and forcing Alex Smithies into a fine sprawling save, before Cairney hit the outside of the post with an arcing strike from 25 yards.
Those were warning signs for Cardiff, which they did not heed.
Four minutes into the second half, Onomah picked up the ball with his back to goal on the edge of the penalty area, turned Marlon Pack and swivelled past Cardiff's static centre-backs, Sean Morrison and Curtis Nelson, before applying an assured low finish.
Fulham's players, substitutes and coaches celebrated exuberantly, and the goal rather knocked the stuffing out of their opponents.
Cardiff could barely lay a glove on Parker's men as they passed the ball around at will, almost toying with the home side as they took a firm grip on the tie.
Former Cardiff forward Bobby Decordova-Reid was close to adding to their lead, his fierce half-volley fizzing narrowly over the bar.
A 1-0 win would not have done Fulham's second-half dominance justice, and Kebano was on hand to ensure that would not be the case, curling his injury-time free-kick delicately over the wall and into the net to double Fulham's delight.
Cardiff's long road back
This was a chastening evening for Cardiff, who came into this fixture the third best record in the Championship since the season's resumption last month, winning six and losing only two of their nine post-lockdown games to finish fifth in the table.
However, one of those defeats came at the hands of Fulham, who Harris was eager to describe as the favourites for this tie because of their more expensively assembled squad.
There might have been a little mischief - an attempt at mind games perhaps - on Harris' behalf but to say the pressure was on Fulham was also a way of galvanising his own players, and of retaining the underdog tag they so often seem to relish.
When Harris took over in November, Cardiff were languishing in 14th place but, with a subtle evolution of their playing style, the former Millwall boss had made the Bluebirds promotion contenders once more.
Those tweaks to the Bluebirds' approach were evident as they started positively against Fulham, moving the ball swiftly and creating two early chances.
Right-back Leandro Bacuna pushed forward to fashion the first, cutting inside and hitting a powerful left-footed shot which Marek Rodak could only parry into the path of Robert Glatzel, who looked destined to tap in before Michael Hector intervened with a superb sliding tackle.
The hosts threatened again three minutes later. Lee Tomlin conjured the opportunity out of nothing, jinking past three Fulham defenders before finding Junior Hoilett, who set up Glatzel, but his shot was straight at Rodak.
Those were promising signs but, once Fulham took the lead, Cardiff could not find a way back into the game.
They tired in the second half as they were forced to chase their opponents or, in reality, chase shadows as Fulham asserted their superiority.
Cardiff City manager Neil Harris:
"It's a real kick in the nuts. In the first 25 minutes we were very good but we have to take our chances when we're on top.
"In the second half we never really got going. We didn't build any sustained pressure and we made three changes to get some impetus, but by then we were 1-0 down.
"With the first goal you are thinking it's goal of the season if you're the Fulham lad, but I think it's too easy. I'd like to see us lay a glove on him.
"The second goal is a great free-kick but is it a foul? The referee has given me a response I can't believe. In the first half Hector fouled Tomlin but he didn't give a free-kick. He said he ran into him. I asked him did Cairney run into Sean Morrison? He said 'two wrongs don't make a right' so he's admitted he's wrong both times."
Fulham manager Scott Parker:
"Overall it was a good performance. We weathered the storm early on and got a foothold in the game.
"I think we're well worthy of the two-goal lead at this stage.
"We worked our socks off and our foundation was built on concrete, but it will be another huge battle on Thursday. This is only halfway through and we'll stand up to the challenge."
On Aleksandar Mitrovic's injury, Parker added: "He's picked up a little bit of a hamstring knock. We went into this game knowing it is over two legs and we made a decision for the team.
"Hopefully we can get him fit for Thursday."
- 7BacunaBooked at 77mins
- 19Mendez-LaingSubstituted forMurphyat 70'minutes
- 33HoilettBooked at 45minsSubstituted forVaulksat 70'minutes
- 9GlatzelSubstituted forWardat 70'minutes
- 24B Smith
- 24KnockaertSubstituted forKamaraat 81'minutes
- 7KebanoSubstituted forOdoiat 90+4'minutes
- 14De Cordova-Reid
- 20Le Marchand
- 43S Sessegnon
- Geoff Eltringham
- Shots on Target
Second Half ends, Cardiff City 0, Fulham 2.
Substitution, Fulham. Denis Odoi replaces Neeskens Kebano.
Goal! Cardiff City 0, Fulham 2. Neeskens Kebano (Fulham) from a free kick with a right footed shot to the top right corner.
Tom Cairney (Fulham) wins a free kick in the attacking half.
Foul by Sean Morrison (Cardiff City).
Foul by Michael Hector (Fulham).
Danny Ward (Cardiff City) wins a free kick on the left wing.
Offside, Fulham. Cyrus Christie tries a through ball, but Josh Onomah is caught offside.
Offside, Cardiff City. Alex Smithies tries a through ball, but Danny Ward is caught offside.
Offside, Fulham. Aboubakar Kamara tries a through ball, but Bobby De Cordova-Reid is caught offside.
Offside, Cardiff City. Danny Ward tries a through ball, but Joe Ralls is caught offside.
Attempt blocked. Tom Cairney (Fulham) left footed shot from the centre of the box is blocked. Assisted by Josh Onomah.
Substitution, Fulham. Aboubakar Kamara replaces Anthony Knockaert.
Attempt blocked. Leandro Bacuna (Cardiff City) right footed shot from outside the box is blocked.
Leandro Bacuna (Cardiff City) is shown the yellow card for a bad foul.
Neeskens Kebano (Fulham) wins a free kick on the left wing.
Foul by Leandro Bacuna (Cardiff City).
Bobby De Cordova-Reid (Fulham) wins a free kick on the right wing.
Foul by Lee Tomlin (Cardiff City).