Pierre-Emerick Aubameyang failed to deliver the goals on his debut as Chelsea suffered their first Champions League opening day defeat in three years.
A Mislav Orsic strike secured Dinamo Zagreb the shock win in Croatia.
The defeat means Chelsea have now lost three consecutive away games for the first time under Thomas Tuchel, having last done so in December 2020 under Frank Lampard.
The Blues had a golden opportunity to score five minutes in with debutant Aubameyang, but the Gabon striker decided to slide the ball to Raheem Sterling whose shot was blocked.
After a rather lacklustre opening 13 minutes, it was the hosts who took the lead.
Robert Ljubicic played the ball forward to Bruno Petkovic, who flicked it into the path of Mislav Orsic, and the Croatian deftly chipped the ball over the stranded Kepa.
Orsic’s fifth goal in four games against English teams will have left a bitter taste in Blues manager Tuchel’s mouth, with Chelsea now on a run of six games without a clean sheet.
Half-time could not come sooner for Tuchel’s men, as they struggled to break down a stubborn Dinamo, offering little going forward, while being prone to the counterattack from the hosts.
The half-time introduction of Hakim Ziyech did little to improve the Blues’ spirits early on, as Tuchel opted for a 4-4-2 formation in an attempt to get through Dinamo’s low block.