Midfielder Fabien Lemoine opened the scoring on 17 minutes with a stunning half-volley and Romain Hamouma netted the second in the 67th for St Etienne, who climbed up to the third Champions League qualifying spot.
Monaco, who were unbeaten in all competitions this year, have 56 points from 27 games, with St Etienne eight points behind them.
Champions PSG, who are chasing the first back-to-back titles in their history, can open an eight-point lead if they beat fifth-placed Olympique Marseille at home on Sunday.
"We have not lost the title because we lost here," Monaco coach Claudio Ranieri told reporters.
"We had to give 130 per cent all along the season to clinch the title and we can't do that. The title has always been for PSG and it's not just now that we have lost the race.
"My team had a good performance ... but we were a bit too nervous, we hurried instead of staying patient after their second goal. St Etienne deserved their victory."
St Etienne, who have now won six of their last seven home games, made a strong start on a poor pitch and midfielder Lemoine narrowly missed the target with a half-volley following a corner kick in the 14th minute.
A similar situation saw him put the hosts in front from 25 metres three minutes later.
Monaco failed to threaten the home goalkeeper Stephane Ruffier until six minutes before halftime when Lemoine cleared a close-range effort from centre back Nicolas Isimat-Mirin, who was covering for Eric Abidal's absence through illness.
The visitors continued to labour in the second half despite a tactical change that led Ranieri to replace Joao Moutinho and Anthony Martial with two wingers at the break.
St Etienne doubled their lead when striker Hamouma ran at goal from his own half, skipped past four opponents and was helped by goalkeeper Danijel Subasic who failed to hold the shot and the ball bounced off his hand into the net.
- Sports & Recreation
- Fabien Lemoine
- Romain Hamouma