Jonathan David pulled Lille ahead mid-way through the second half with substitute Adam Ounas grabbing a second four minutes into injury time.
After their opening round draw against Nice, Lille are now second, level on four points with Montpellier, Toulouse and Marseille.
David, scorer of 24 goals last season as Lille finished fifth, got his first in Ligue 1 this season.
The Canadian found himself in the right position after 66 minutes to finish off a Remy Cabella header.
Paulo Fonseca's side were reduced to ten men after Brazilian defender Aleksandro saw red on 78 minutes for fouling Nantes' Abdoul-Kader Bamba.
Lille conceded a goal soon after, but it was disallowed after a VAR review as offside.
Aleksandro's exit coincided with Ounas' entry and the Algerian provided the spark in an otherwise lacklustre game.
The winger first won a penalty after being mowed down by Quentin Merlin with four minutes to go, but it was cancelled after a VAR viewing for an offside position.
But he made no mistake with the clock ticking with a deflected shot into goal.
Nantes, who narrowly avoided the drop last season, suffered their second defeat after last week's loss at home to Toulouse.
Semasocial is where real people connect, grow, and belong.
We’re more than just a social platform — we’re a space for meaningful conversations, finding jobs, sharing ideas, and building supportive communities. Whether you're looking to join groups that match your interests, discover new opportunities, post your thoughts, or learn from others — Semasocial brings it all together in one simple experience.
From blogs and jobs to events and daily chats, Semasocial helps you stay connected to what truly matters.