It was the hosts who had the first chance of the match inside the opening two minutes, when a flowing move from one end of the field to the other resulted in Pierre-Emerick Aubameyang forcing a wonderful save from Steve Mandanda, who pushed the ball away from the top corner of the net.
Mandanda was called into action again shortly after when he saved a Brandao shot that was heading for the bottom corner.
However, the hosts finally went ahead in the 25th minute when Brandao's free kick set up Perrin, who scored from close range.
The away side nearly found an instant response courtesy of Mathieu Valbuena, but his long-range drive flew just wide of the near post.
A minute later Mandanda was forced to make another save following Romain Hamouma's shot from the right.
However, Saint-Etienne finally got the second goal they deserved just before the break when Brandao headed home a Faouzi Ghoulam cross.
Chances were few and far between at the beginning of the second half, but Gignac's shot across goal brought a fine save from Stephane Ruffier.