Holders Real Madrid fell to their first Champions League defeat since May 2023 as Lille upset them at the Pierre-Mauroy Stadium.
It was also a first loss for Carlo Ancelotti's side in 36 matches in all competitions - dating back to 18 January against Atletico Madrid in the Copa del Rey.
Jonathan David scored the only goal from the penalty spot for Lille after a video assistant referee (VAR) review ruled that Real's French midfielder Eduardo Camavinga had blocked Edon Zhegrova’s free-kick with his arm.
The hosts were superb throughout and more than merited their victory to get up and running in this season's competition following a 2-0 loss to Sporting in their opening game.
Prior to scoring from the spot, Canada international David was denied by a superb double save from visiting keeper Andriy Lunin as Bruno Genesio's team dominated proceedings.
Brazilian forward Endrick, who at 18 years and 73 days became the youngest ever player to start for Real in the competition, was unable to make an impact, while England midfielder Jude Bellingham also struggled to impose himself on the game.
However, the Ligue 1 club were forced to hang on at the end against a Real side that introduced Kylian Mbappe - returning from a thigh injury - just before the hour mark.
A late rally from the 15-time European champions saw Antonio Rudiger's header cleared off the line and Arda Guler head a gilt-edged opportunity straight at home goalkeeper Lucas Chevalier.
Real, who beat Stuttgart in their opening match, host Borussia Dortmund in a repeat of last term's final in their next Champions League fixture, while Lille travel to Atletico Madrid.
Watch highlights of every Champions League game from 22:00 on Wednesday on BBC iPlayer and the BBC Sport website and app.
There will also be a Champions League Match of the Day on BBC One on Wednesday, from 22:40 to 00:00.