Laurent Blanc's side was below par all evening but still boasts a 10-point lead at the top of Ligue 1 following Sunday's loss
Laurent Blanc's men were eliminated from the Champions League on Tuesday, losing on away goals to Chelsea in the quarterfinals, and they delivered another below par performance on Sunday.
The Stade de Gerland had been the scene of last year's title triumph for the visitors but their march to this year's championship suffered a blip, as Lyon claimed a deserved victory.
With it, Remi Garde's side also gained a psychological advantage in what was effectively a dress rehearsal for the Coupe de la Ligue final next Saturday.
Lyon midfielder Ferri scored the only of the game in spectacular fashion after 31 minutes, netting for the fifth time this season in all competitions with a magnificent long-range effort to end PSG's 16-game league unbeaten run.
Despite the reverse, Blanc's side still leads the top flight by 10 points and can retain its crown with a win over Evian next Wednesday, providing that Monaco loses to Nice next Sunday.
Midfielder Yohan Cabaye was called into the PSG starting XI as Blanc made four changes from the defeat to Chelsea, while injury-hit Lyon was still without star midfielders Clement Grenier and Yoann Gourcuff.
PSG made a fast start and would have taken the lead inside two minutes had Lyon goalkeeper Anthony Lopes not tipped Edinson Cavani's close-range header onto the near post.
Six minutes later the visitors cut through the Lyon defense again. Cavani latched onto a through ball from Blaise Matuidi before rolling the ball to Lucas Digne to slot home into an empty net, only for the goal to be disallowed for offside.
Just after the half-hour mark Lyon took a surprise lead, as Ferri capitalized on a loose pass from Ezequiel Lavezzi to curl a shot brilliantly into the bottom corner.
There was little change in the second half as PSG - once again minus the talents of injured top scorer Zlatan Ibrahimovic - struggled to create much in the final third against a determined Lyon defense.
Digne did draw a strong save from Lopes with bending effort from the edge of the area, with Lavezzi's follow up correctly ruled out for offside.
Lyon continued to carry the greater threat and went close to a second as Jimmy Briand glanced a header wide from a right-wing cross by Ferri, who then forced PSG goalkeeper Salvatore Sirigu to palm the ball over the crossbar with a vicious volley from range.
And PSG's frustration was summed up soon afterwards when Lavezzi wasted arguably its best chance to level, shooting into the side-netting from six yards late on.