Mevlut Erding had an early opening for the home side but blasted wide as St Etienne began in the ascendancy.
Benjamin Corgnet opened the scoring in 24th minute at the Stade Geoffroy-Guichard with a drive from distance and, although Nantes threatened intermittently, the hosts were comfortable for much of the rest of the first half.
Serge Gakpe saw his effort from distance saved by Stephane Ruffier before the break and the visitors threatened early in the second half but could not force a leveller.
However, when Chaker Alhadhur handled, Erding made no mistake from the spot in the 83rd minute penalty to ensure all three points.
Herve Renard saw his Sochaux record their first win of his tenure as they beat Rennes 2-1.
Cedric Bakumbu was the match-winner with a goal either side of a Romain Alessandrini penalty.
Bakumbu opened the scoring after 18 minutes with a penalty only to see Rennes awarded a penalty of their own in the 41st to see the sides go to the interval at parity.
But Bakumbu struck in the 72nd minute to lift his side off the bottom of the table.
Ajaccio fell to the foot of the table after falling to a heavy 4-1 loss against Reims.
It was scoreless at the interval but the floodgates opened after Gaetan Charbonnier struck in the 59th minute.
The forward grabbed another three minutes later before Eliran Atar made it three.
Eduardo cut the arrears on 74 minutes but Guillermo Ochoa got a fourth for the hosts with 77 minutes on the clock.
Elsewhere, SC Bastia played out a scoreless draw with Montpellier at Stade Armand Césari-Furiani; Nice beat Evian 3-1 and Toulouse drew 0-0 with Guingamp.