Lucas Tousart's first-half goal saw a superb Lyon stun Juventus 1-0 in the first leg of their Champions League last-16 tie.
Tousart turned in Houssem Aouar's cross 14 minutes before the break with Juve momentarily reduced to 10 men while Matthijs De Ligt was treated for a head injury, but the victory was no less than Rudi Garcia's side deserved.
Their first win over Juventus in their history was underpinned by a textbook defensive performance, which denied the Serie A club a single shot on target across 90 minutes.
It was the hosts who enjoyed the better of the chances for most of the game, with Karl Toko-Ekambi rattling the bar from a corner before Tousart's opener. Juventus substitute Gonzalo Higuain shot wide from close-range with time running out to ensure Lyon travel to Turin on March 13 enjoying a valuable first-leg lead.
Lyon: Lopes (6), Denayer (7), Marcelo (8), Marcal (8), Tousart (7), Dubois (7), Guimaraes (6), Aouar (9), Cornet (7), Dembele (6), Toko-Ekambi (7).
Subs: Terrier (6), Tete (7), Andersen (n/a).
Juventus: Szczesny (6), Danilo (5), De Ligt (6), Bonucci (6), Alex Sandro (6), Betancur (5), Pjanic (5), Rabiot (6), Cuadrado (5), Dybala (5), Ronaldo (6).
Subs: Ramsey (6), Higuain (5), Bernardeschi (5).
Man of the match: Houssem Aouar
How Lyon made history to blunt Juve
Starting on the front foot, Cristiano Ronaldo almost found Juan Cuadrado at the far post inside four minutes, but that hardly provided an insight into how the half would pan out.
Just as they had at this stage 12 months ago against Barcelona, Lyon looked to be compact without the ball and spring on the break. When one such attack led to their first corner of the game, Toko-Ekambi left the crossbar shaking after meeting Aouar's excellent corner at the near post.
Ten minutes later, with De Ligt forced off by a cut to the head, an improvised backline was breached when Aouar beat Cuadrado down the left before crossing. With the visitors unsure who was marking who, Tousart ghosted in. His top-corner effort was untidy but it beat Wojciech Szczesny.
Back to their full line-up, Juventus nearly crumbled before the break. A lazy pass back to Leonardo Bonucci was picked off by Toko-Ekambi, who went for power from a tight angle and fired over the crossbar, while the same man was again off target from 25 yards minutes later.
There was always an expectation Juventus would improve - especially with Ronaldo entering the game on the back of scoring in 11 Serie A games in succession - but little changed after half-time, in a second period which lacked goalmouth action but was a display of raw determination from Garcia's superbly organised hosts.
It took until the 68th minute for a chance of note to drop either way, and it was one Juventus badly needed to take. Paulo Dybala arrived late to sweep Rodrigo Betancur's cross goalwards, but missed the near post by a matter of inches.
With eight to go, it was a similar story for substitute Higuain. Receiving a perfect pass inside from Dybala, he struggled to get the ball out of his feet and clumsily fired wide from eight yards.
In added time, the visitors had a shout for a penalty when Dybala went to ground with Bruno Guimaraes grabbing a handful of his shirt, but referee Jesus Manzano waved away his protests - and with it, Juventus' hopes of a first-leg comeback.
Man of the match - Houssem Aouar
Aged just 21, Aouar is already a man who revels on the big stage. He took the midfield by the scruff of the neck against Barcelona 12 months ago, and he did it again tonight.
Be it a deft flick over Federico Bernadeschi or a perfect cross to assist the only goal of the game - his fifth goal involvement in as many Champions League games this season - he looked the most accomplished midfielder on the pitch at the Groupama Stadium, something which will only increase the clamour about his future come the summer.
- Lyon have won their first UEFA Champions League knock-out tie since February 2012 (1-0 v APOEL Nicosia).
- Lyon are unbeaten at home in the UEFA Champions League in nine consecutive games (W2 D7), their longest run since December 2006 (18 games - W12 D6).
- Juventus have progressed from 5 of their 11 CL KO ties when losing the first leg, including the most recent one (vs Atletico in last 16 last season).
- Juventus have conceded in seven consecutive away games in all competitions, their longest such run without a clean sheet in a single season since May 2010 (18 games).
Lyon have a Ligue 1 derby to look forward to when they host Saint-Etienne on Sunday at 8pm. Juventus host third-placed Inter in Serie A on Sunday night at 7.45pm, although that game is subject to any further action from the Italian authorities on the outbreak of Coronavirus in the country.