Joao Felix was sent off on his Chelsea debut as his new side lost a west London derby at Fulham to increase the pressure on Blues boss Graham Potter.
Joao Felix, who only joined Chelsea on Wednesday in a £9.7m loan deal until the end of the season from Atletico Madrid, was shown a straight red card for a horrible lunge on defender Kenny Tete after 58 minutes.
It was 1-1 at the time, with Willian putting the hosts ahead against his former side in the first half, before Kalidou Koulibaly equalised early in the second.
But the 10 men of Chelsea could not hang on to a point as Carlos Vinicius headed in a 72nd-minute winner.
Felix impresses before his red card changes the match
Potter's Blues side started brightly, but the hosts nearly took the lead when Chelsea lost possession and Carlos Vinicius played a pass through to Bobby de Cordova-Reid, who fired against the crossbar with Kepa Arrizabalaga beaten.
But Chelsea fell behind two minutes later in the 25th minute.
It was poor defending from the visitors as teenage left-back Lewis Hall failed to clear, before Trevoh Chalobah should have done better with his clearance.
The ball fell to Willian and the Brazil midfielder, a two-time Premier League winner during a seven-year spell at Chelsea, saw his strike take a big deflection off Chalobah to give Arrizabalaga no chance. Willian did not celebrate against his former team.
But Chelsea equalised within two minutes of the second half as Koulibaly reacted quickest to force the ball over the line from close range after Mason Mount's free-kick had bounced off the left-hand post.
Joao Felix had been the visitors' best player before his dismissal left his side on the back foot, with Vinicius scoring the winner.
Chelsea have now only won twice in 10 matches in all competitions with Joao Felix set to be suspended for three games.
Fulham's excellent season continues
There was a party atmosphere among the home fans at Craven Cottage at the final whistle.
This was only Fulham's fourth win in 53 top-flight matches against Chelsea, and ended a run of 20 Premier League games without a win against the Blues since a 1-0 victory in March 2006.
Fulham now move up to sixth in the Premier League, although they have played two more games than Liverpool, the side they have moved above.
Nevertheless, this result still continues an incredible season for Marco Silva's Fulham, who won promotion from the Championship earlier this season.
In the build-up to this match, club captain Tom Cairney said the players were not "thinking at all" about the possibility of qualifying for Europe next season, but the Fulham fans will be starting to dream of what could happen in the rest of the campaign.
What made this result even more special for Silva was the fact he was without 11-goal top scorer Aleksandar Mitrovic, but Vinicius proved to be an able deputy and his goal sent the Fulham fans home happy.
For Chelsea, European football is already looking a long way off. They have just 25 points from their opening 18 Premier League games this season, their fewest at this stage since 2015-16, the only season since 1996-97 when they have failed to qualify for Europe.
Player of the match
Andreas PereiraAndreas Pereira
Fulham
Squad number18Player nameAndreas Pereira
Squad number20Player nameWillian
Squad number30Player nameCarlos Vinícius
Squad number26Player nameJoão Palhinha
Squad number8Player nameWilson
Squad number17Player nameLeno
Squad number13Player nameReam
Squad number14Player nameDe Cordova-Reid
Squad number6Player nameReed
Squad number10Player nameCairney
Squad number33Player nameRobinson
Squad number2Player nameTete
Squad number4Player nameTosin
Squad number21Player nameJames
Squad number11Player nameSolomon
Squad number12Player nameChalobah
Chelsea
Squad number6Player nameThiago Silva
Squad number11Player nameJoão Félix
Squad number20Player nameZakaria
Squad number67Player nameHall
Squad number26Player nameKoulibaly
Squad number19Player nameMount
Squad number8Player nameKovacic
Squad number30Player nameChukwuemeka
Squad number28Player nameAzpilicueta
Squad number29Player nameHavertz
Squad number5Player nameJorginho
Squad number23Player nameGallagher
Squad number1Player nameArrizabalaga
Squad number22Player nameZiyech
Squad number32Player nameCucurella
Squad number14Player nameChalobah
Line-ups
Fulham
Formation 4-2-3-1
17Leno
2Tete4Tosin13Ream33Robinson
26João Palhinha6Reed
14De Cordova-Reid18Pereira20Willian
30Alves Morais
17LenoBooked at 90mins2Tete4TosinBooked at 84mins13Ream33RobinsonBooked at 9mins26João Palhinha6ReedSubstituted forCairneyat 68'minutes14De Cordova-ReidSubstituted forWilsonat 68'minutes18PereiraBooked at 14minsSubstituted forJamesat 90+3'minutes20WillianSubstituted forSolomonat 83'minutes30Alves MoraisSubstituted forChalobahat 90+4'minutesSubstitutes
1Rodák3Kurzawa8Wilson10Cairney11Solomon12Chalobah21James31Diop38HarrisChelsea
Formation 3-5-2
1Arrizabalaga
14Chalobah6Thiago Silva26Koulibaly
28Azpilicueta19Mount20Zakaria8Kovacic67Hall
11João Félix29Havertz
1Arrizabalaga14ChalobahBooked at 36minsSubstituted forCucurellaat 79'minutes6Thiago Silva26Koulibaly28Azpilicueta19MountBooked at 76minsSubstituted forZiyechat 80'minutes20ZakariaSubstituted forJorginhoat 56'minutes8KovacicSubstituted forGallagherat 79'minutes67HallBooked at 62minsSubstituted forChukwuemekaat 79'minutes11João FélixBooked at 58mins29HavertzSubstitutes
4Badiashile5Jorginho9Aubameyang13Bettinelli22Ziyech23Gallagher27Fofana30Chukwuemeka32CucurellaLive Text
Match ends, Fulham 2, Chelsea 1.
Second Half ends, Fulham 2, Chelsea 1.
Bernd Leno (Fulham) is shown the yellow card.
Foul by Carney Chukwuemeka (Chelsea).
Tom Cairney (Fulham) wins a free kick in the defensive half.
Substitution, Fulham. Nathaniel Chalobah replaces Carlos Vinícius.
Substitution, Fulham. Dan James replaces Andreas Pereira.
Foul by Kai Havertz (Chelsea).
Tim Ream (Fulham) wins a free kick in the defensive half.
Attempt saved. Kai Havertz (Chelsea) left footed shot from the left side of the box is saved in the bottom right corner. Assisted by Kalidou Koulibaly.
Conor Gallagher (Chelsea) wins a free kick in the defensive half.
Foul by Carlos Vinícius (Fulham).
Corner, Fulham. Conceded by César Azpilicueta.
Corner, Chelsea. Conceded by Tosin Adarabioyo.
Offside, Chelsea. Marc Cucurella tries a through ball, but Kai Havertz is caught offside.
Tosin Adarabioyo (Fulham) is shown the yellow card.
Substitution, Fulham. Manor Solomon replaces Willian.
Foul by Kalidou Koulibaly (Chelsea).
Carlos Vinícius (Fulham) wins a free kick on the right wing.
Attempt blocked. Marc Cucurella (Chelsea) right footed shot from the left side of the box is blocked. Assisted by Carney Chukwuemeka.
Our coverage of your Premier League club is bigger and better than ever before - here's everything you need to know to make sure you never miss a moment