Chelsea's patchy start to the season continued with a 1-0 defeat at Dinamo Zagreb in their Champions League group stage opener.
Thomas Tuchel's side started brightly in Croatia but quickly faded after conceding on the counter attack, with Dinamo running out deserved victors at Stadion Maksimir.
Raheem Sterling and Pierre-Emerick Aubameyang combined nicely in the opening five minutes to create the game's first chance, with the former's shot being blocked by Stefan Ristovski from close range before a late offside flag was raised.
A low cross from Kai Havertz managed to evade everyone in the six-yard box soon after as Chelsea's front three began to click into gear.
Mateo Kovacic managed to win the ball back in midfield and set Aubameyang racing clear, but he was denied by a brilliant recovery challenge from Josip Sutalo.
But Dinamo scored at the end of an enthralling breakaway to take the lead. Bruno Petkovic's neat layoff sent Mislav Orsic racing away, and he managed to outpace Wesley Fofana and lift a shot over Kepa Arrizabalaga.
Orsic then curled a strike from 18 yards just wide, while Arrizabalaga was forced into a save by Arijan Ademi.
The Blues went into the break a goal behind, failing to create an opening and responding poorly after Dinamo's opener.
Chelsea came racing out of the blocks again trying to find an equaliser after the break, with Hakim Ziyech trying his luck from distance and another cross from Havertz missing his teammates.
Aubameyang thought he'd scored his first Chelsea goal when Kovacic picked out Ben Chilwell to square for the Gabonese striker to tap in, but the left-back was offside and the strike was chalked off.
Arrizabalaga was called into action once more as he tipped a thunderous Ristovski strike onto the bar, while Chelsea substitute Armando Broja made Dominik Livakovic work with his cross-cum-shot.
Robert Ljubicic made an outstanding block to keep Havertz from powering home a header from Mason Mount's lofty cross, and Reece James saw an effort strike the post.
Livakovic produced a wonderful double save to keep out Jorginho and Ziyech, though the flag was raised against the latter eventually.
Dinamo managed to ride out eight minutes of stoppage time to claim a famous win and condemn Chelsea to their third defeat of the season.
1. Dinamo Zagreb (3-5-2)
GK: Dominik Livakovic - 7/10 - Surprisingly called into action very little until late on, when he showed little sign of rustiness.
CB: Stefan Ristovski - 7/10 - Seemed to have a sixth sense to intercept danger.
CB: Josip Sutalo - 8/10 - A rock at the heart of the Dinamo defence, while he was elegant on the ball.
CB: Dino Peric - 7/10 - Enjoyed a couple of forays into the Chelsea half. Defended excellently.
RWB: Sadegh Moharrami - 6/10 - Had a lot of freedom in the first half but was made to work after the break.
CM: Arijan Ademi - 7/10 - Led with authority and by example.
CM: Josip Misic - 6/10 - A tidy game in the heart of midfield.
CM: Luka Ivanusec - 6/10 - Danced and pranced his way through midfield on occasion.
LWB: Robert Ljubicic - 7/10 - Relished his battles with James and usually came out on top.
CF: Bruno Petkovic - 8/10 - Had Koulibaly's number. Linked up excellently with Orsic.
CF: Mislav Orsic - 8/10 - Whenever Orsic had the ball, he was a thorn in Chelsea's side. Has now grabbed goals against three London sides after scoring against West Ham and Tottenham in the last two seasons.
Manager: Ante Cacic - 8/10 - Dinamo were well-drilled, disciplined and stuck to their guns.
SUB: Rasmus Lauritsen (76' for Moharrami) - 6/10
SUB: Dario Spikic (76' for Orsic) - 6/10
SUB: Martin Baturina (89' for Ademi) - N/A
SUB: Josip Drmic (90' for Petkovic) - N/A
2. Chelsea (3-4-3)
GK: Kepa Arrizabalaga - 6/10 - Rushed off his line to try and deny Orsic when his defenders failed him. Made a few decent saves in the absence of Edouard Mendy.
CB: Cesar Azpilicueta - 4/10 - Looked rather wily and was replaced at half-time.
CB: Wesley Fofana - 4/10 - For a defender regarded to be pacy, Fofana looked awfully slow trying to catch Orsic.
CB: Kalidou Koulibaly - 4/10 - Far too easily beaten by Petkovic in the lead up to the opener.
RWB: Reece James - 5/10 - Had plenty of crosses but few of them caused trouble.
CM: Mason Mount - 5/10 - Didn't suit a deeper role, particularly after Dinamo's opener meant they could shut up shop.
CM: Mateo Kovacic - 6/10 - Wasn't the tidiest in possession but at least he tried to pick the lock.
LWB: Ben Chilwell - 5/10 - Clicked into gear after the interval, but his threat even then wasn't consistent.
RF: Kai Havertz - 5/10 - Loved to put in crosses to meet absolutely nobody. Guilty of holding onto the ball for too long.
CF: Pierre-Emerick Aubameyang - 5/10 - Looked lively to begin with but became isolated once Dinamo dropped deep.
LF: Raheem Sterling - 5/10 - Dinamo completely nullified Sterling's threat after a busy opening 15 minutes.
Manager: Thomas Tuchel - 3/10 - Chelsea were very predictable and Tuchel's substitutions failed to change the tide.
SUB: Hakim Ziyech (46' for Azpilicueta) - 3/10 - Saw a lot of possession but did very little with it. Was a detriment to Chelsea in the closing stages, handling the ball and providing two awful free-kicks.
SUB: Jorginho (59' for Kovacic) - 5/10
SUB: Armando Broja (58' for Aubameyang) - 5/10
SUB: Marc Cucurella (71' for Chilwell) - 4/10
SUB: Christian Pulisic (75' for Sterling) - 5/10