Croatia forward Mislav Orsic's breakaway goal proved enough for Dinamo to topple the 2021 Champions League winners at the Maksimir Stadium.
Reece James struck a post at the death but Dinamo were not to be denied a victory as famous and deserved for the hosts as it could prove damaging for the Blues.
Thomas Tuchel's rudderless and insipid Chelsea dominated the ball from first to last but proved worryingly toothless in the final third.
Pierre-Emerick Aubameyang was denied a debut goal when he tapped in from Ben Chilwell's cross only for the England full-back to be ruled offside from Mateo Kovacic's pass.
New striker Aubameyang appeared tentative on his Blues bow, though the Gabon forward can be afforded leeway given he featured with a face mask to protect his broken jaw.
Chelsea's other off-kilter charges can proffer precious little excuse however, amid the latest troublesome result for the Blues.
The new Stamford Bridge bosses might have spent a Premier League-record £273million in the summer transfer window, but this is still a team in transition.
Dinamo have never reached the Champions League knock-out stages, and yet the homespun hosts still had enough to see off the two-time tournament winners.
Chelsea have now gone six games without a clean sheet and boss Tuchel's frustrations were encapsulated in another yellow card - following his sending-off in the 2-2 draw with Spurs.
Tuchel will need no telling that Chelsea must find momentum, and fast, to avoid the new era turning into a crossroads.
Mason Mount dropped into a new role in defensive midfield alongside Kovacic. A smart idea in theory from Tuchel, attempting to capitalise on Mount's work rate and pressing ability.
But amid Chelsea's wretched first half, the England international too often lost positional discipline, leaving glaring gaps for Dinamo to exploit.
Tuchel switched formations and ideas several times in a bid to turn the tide after the break, but Dinamo held firm as Chelsea again flailed at fluency.
Chelsea marched into early control through dominating possession, but several half-chances were left unfinished.
Debutant Aubameyang teed up Sterling only for the England forward's shot to be well blocked. Aubameyang then looked for a square ball when he should have lined up a strike on goal.
In a flash though, Zagreb plundered the lead. Chelsea's attack broke down on the edge of the Dinamo area and the home side powered upfield. Two passes later, Orsic had outstripped Wesley Fofana and dinked past the despairing Kepa Arrizabalaga.
Orsic skied another chance as Chelsea's travails continued, before Chilwell had to block another strike from the goalscorer.
Chilwell's cross begged for a finish as Chelsea pressed again, but Aubameyang's touch eluded him and Dinamo cleared.
Hakim Ziyech replaced Cesar Azpilicueta at half-time, with Chelsea switching to a back four.
Aubameyang quickly tapped home from Chilwell's low cross, but the left-back was offside from Kovacic's pass and the goal did not stand.
Stefan Ristovski almost doubled the home lead by firing a rasping shot on goal from distance. Kepa palmed the ball away to safety via the crossbar.
Armando Broja showed flashes of promise off the bench and James drilled a low effort against the upright.
But that late flurry proved to no avail, leaving Chelsea to slump to their third defeat in seven matches this season.