Young French midfielder Grenier tested Diego Lopez in the opening stages of the game with a speculative volley from 20 yards.
The 22-year-old went one better after 20 minutes, elegantly placing a volley into the top corner with a neat flick.
Madrid almost replied immediately as Di Maria raced onto an under-hit back pass, but Anthony Lopes was quick off his line to thwart the danger.
The Argentinian winger soon went close once again with a long-range effort, but Lyon went into the half-time break with their lead intact.
Both sides flew into tackles as the game resembled anything but a friendly. Lacazette and Casemiro squared up to one another and both players were booked for the confrontation.
Lacazette fed his strike partner Lopez on the hour mark, and the Argentine made no mistake in doubling Lyon's lead.
Los Blancos clawed a goal back as young forward Alvaro Morata coolly slotted home a penalty after Denis Cheryshev was fouled en route to goal.
Casemiro, a summer signing from Brazilian side Sao Paulo, drew the away side level with just minutes remaining as he rose highest to nod home a corner.