Fekir, who also scored in the first half, found the back of the net seconds before the final whistle with a perfectly-executed free kick to send Lyon up to third in the league on 16 points.
Monaco are second on 19 points, three behind leaders Paris St Germain, who travel to Dijon on Saturday.
The home side went ahead on 11 minutes when Mariano Diaz managed to get on the end of a perfect cross from Fekir.
Monaco levelled six minutes later, Portugal’s Rony Lopes finishing at end of a sharp counter attack.
Fekir was at the end of a superb one-two-three passing move in the box to put the hosts ahead again in the 23rd minute.
But Monaco were not ready to let go and equalised little more than 10 minutes later, as Adama Traore hit a missile of a strike from just outside the area.
The visitors had plenty of opportunities in the second half but were too clumsy in attack to clinch a victory they would have deserved, four days before they host Besiktas in the Champions League.
They paid dearly for their profligacy as Fekir was spot on with his late free kick.
(Reporting by Julien Pretot; Editing by Christian Radnedge)