Monaco, who finished with 10 men after Ruben Aguilar was sent off two minutes into added time, dropped to 15th on 15 points.
Elsewhere, Nantes suffered their third consecutive defeat in Ligue 1 when they were beaten 2-0 at Girondins de Bordeaux, slipping down to third on 19 points.
At Geoffroy Guichard, St Etienne seemed content to abandon possession to their visitors, hoping to hit Monaco on the break while their back four handled the Wissam Ben Yedder threat perfectly.
Bouanga, who had missed several chances earlier, found the back of the net in the 59th minute, poking the ball home after keeper Benjamin Lecomte parried Romain Hamouma's effort into his path.
Monaco, who had won four of their previous five league matches, had several opportunities to salvage a point but Aleksandr Golovin and Adrien Silva lacked efficiency.
St Etienne, now unbeaten in five games in all competitions with Puel, could have doubled the tally in injury time but Bouanga was brought down by Aguilar while rushing towards goal, resulting in the defender being shown a straight red card.