Juventus' Juan Cuadrado celebrates after scoring a goal against Olympique Lyonnais on October 18, 2016 in Decines-Charpieu near Lyon, southeastern France
But substitute Cuadrado struck in the final quarter of an hour to stun the home fans at the Parc OL and leave the Serie A giants, Champions League runners-up in 2015, in a strong position in their section.
They are level at the top of Group H on seven points along with Sevilla, who were 1-0 winners away to Dinamo Zagreb in Croatia, while Lyon sit four points back in third place.
"What more do you want us to do," Lyon captain Maxime Gonalons told beIN Sports after the home side failed to find a way past an often inspired Buffon.
"We gave everything. It was a tactical battle. We had chances but Buffon was in great form. He was remarkable."
Juventus had never won in six previous visits to France in the competition but Massimiliano Allegri's side arrived on a run of five consecutive wins in all competitions.
Opponents Lyon had the fit-again Lacazette leading their attack but selection worries in defence meant coach Bruno Genesio handed a start to the 19-year-old Mouctar Diakhaby at the back.
Juventus, with former Lyon hero Miralem Pjanic in their midfield, were the dominant force in the early stages and Gonzalo Higuain fizzed a shot just over and then forced a fine save from Anthony Lopes.
Lyon were struggling to get into the game but they won a penalty in the 34th minute when Leonardo Bonucci was penalised for wrestling Diakhaby to the floor at a corner.
With France coach Didier Deschamps watching from the stands, Lacazette stepped up to take the spot-kick but his effort was saved by Buffon, diving down low to his left.
Lopes then denied Higuain and Bonucci headed narrowly wide as the first period ended goalless, before Lyon emerged as more of a threat after the restart.
Buffon, who had been guilty of conceding soft goals for Italy against Spain recently and in Juve's win over Udinese at the weekend, produced a great save from Nabil Fekir's deflected shot and also somehow kept out a Corentin Tolisso header from point-blank range.
In between, the visitors had been reduced to 10 men in the 54th minute when French midfielder Lemina was shown a second yellow card for a foul on Fekir, although he had appeared to take the ball.
But Lyon could not make their man advantage count and Cuadrado, who had replaced Paulo Dybala midway through the second half, collected a Dani Alves pass before cutting in from the right and firing in a shot that took Lopes by surprise and flew in between the 'keeper and his near post.