Kalifa Coulibaly fired hosts Nantes into an 11th-minute lead when he latched on to a through ball from Majeed Waris and finished past Lyon keeper Anthony Lopes.
But Lyon equalised four minutes before half-time when Martin Terrier collected the ball from Moussa Dembele and fired low into the corner of the goal from the edge of the area.
Terrier had a chance to fire Lyon ahead at the start of the second half but his shot was saved by Ciprian Tatarusanu.
Instead, it was Nantes who snatched the points seven minutes from time when Tanguy Ndombele fouled Majeed Waris and Limbombe dispatched the free-kick into the top left corner.
The win moved Nantes up to 15th place in the table and nine points clear of the relegation zone.