Angel Di Maria fired PSG into a seventh-minute lead, but Dembele equalised and Nabil Fekir scored the winner from the spot three minutes after half-time.
The reigning champions remain 10 points clear of second-placed Lille at the top of the table despite the defeat, with two games in hand, while Lyon strengthened their grip on third spot, three points further back.
All eyes will now turn to the Champions League for PSG, with only a French Cup tie at third-tier Villefranche and a home game against Bordeaux to come before the first leg of the last-16 clash with Manchester United at Old Trafford on February 12.
Man Utd watching
Man United boss Ole Gunnar Solskjaer and his assistant Mike Phelan were both in attendance at the Groupama Stadium on Sunday, just hours after their side's 1-0 Premier League win at Leicester.
The pair would have learned plenty from watching Lyon regularly slice through the PSG defence against seemingly little resistance, while Kylian Mbappe shouldered the majority of the attacking responsibility in the absence of the injured Neymar.
"We did what we had planned, namely high pressing, quick transitions, and to cause them problems every time we had the ball," said Lyon coach Bruno Genesio. "I don't think they're used to that in Ligue 1."
On paper, this looked the toughest test remaining for PSG in their bid to go through the league season unbeaten, having won on just two of their previous 13 Ligue 1 visits to Lyon, losing seven.
But Thomas Tuchel's men almost forged ahead inside the first two minutes, as Kylian Mbappe raced clear only to shoot tamely at Lyon goalkeeper Anthony Lopes.
The away side did not have to wait long to strike, though, as Houssem Aouar carelessly gifted possession to Julian Draxler, who strode forward and teed up Di Maria to slot in his 10th goal of the season.
But Lyon, on a six-match unbeaten run in the league themselves, quickly improved and twice wasted clear-cut chances to level, as PSG 'keeper Alphonse Areola denied Bertrand Traore from point-blank range before Dembele nodded wide.
Areola had to be alert again, springing to his right to tip away a vicious long-range drive from Nabil Fekir, before producing a wonderful double stop from Traore and Memphis Depay.
However, just seconds after another excellent save to deny Fekir, Areola was totally at fault for Lyon's 33rd-minute equaliser.
The 25-year-old misjudged Leo Dubois' cross, allowing Dembele the simplest of tasks to head into the net.
PSG almost snatched a half-time lead against the run of play, but Lyon centre-back Jason Denayer made an incredible diving header to keep out Draxler's close-range shot.
Lyon, who face Barcelona in the Champions League knockout stage, continued to dominate after the restart, and were awarded a spot-kick when Dembele was brought down by Thiago Silva, with Fekir doing the rest.
That provoked PSG into life, and Lopes made two brilliant saves from Mbappe in the space of just 20 seconds.
Mbappe was PSG's best hope of salvaging their unbeaten record, but he saw Lopes divert away a low drive, before former Celtic striker Dembele wasted a golden opportunity to wrap up the points as he was again foiled by Areola.