Teenage midfielder Houssem Aouar scored twice, including a last-gasp winner, as Lyon came from behind to triumph 2-1 at Amiens and go second on goal difference above both Monaco and Marseille.
OM eased to a 3-0 win against a miserable Saint-Etienne side at the Velodrome in Sunday's late game, with Valere Germain netting twice.
That trio are all nine points behind Paris Saint-Germain, who are certain to end the calendar year top of the table after beating Lille 3-1 on Saturday with goals from Angel di Maria, Javier Pastore and Kylian Mbappe.
With PSG, who were without the suspended Neymar, huge favourites to win the title, that leaves just two places in next season's Champions League for the three sides below them.
Serge Gakpe had given Amiens the lead against Lyon before Aouar levelled in the 79th minute.
The hosts still could have won it, but former Chelsea prodigy Gael Kakuta missed a penalty in the 89th minute and Aouar made him pay as he popped up with the winner at the other end in the fourth minute of added time.
"We got a couple of breaks but we did also go looking for the equaliser and then the victory by showing character and rolling our sleeves up," said the Lyon coach Bruno Genesio, whose side have now claimed five consecutive away league wins.
- Germain breaks Marseille duck -
It was a sickening finish for Amiens, who have impressed on their debut season in France's top flight. However, not for the first time security at their Stade de la Licorne was called into question.
A part of the 11,500-capacity ground in the northern region of Picardy had to be evacuated before kick-off because strong winds had caused one of the floodlights to become partially detached, posing a security risk.
Around 500 spectators had to be moved to avoid any threat of the lighting falling on them.
At the end of September, 29 Lille supporters were injured as a barrier collapsed while they celebrated their team scoring. That game had to be abandoned.
Things were straightforward for Marseille in Sunday's late match, with Germain finally scoring his first league goals for the club following a summer move from Monaco.
He headed in the early opener after Florian Thauvin had flicked on a Dimitri Payet corner. And Thauvin set up Germain to make it 2-0 in the 71st minute after Saint-Etienne's Ronael Pierre-Gabriel had been sent off.
Argentine winger Lucas Ocampos completed a comprehensive win for OM late on, and Marseille are now 12 Ligue 1 games unbeaten. They go to Lyon next weekend.
Meanwhile, Balotelli's superb strike from the edge of the area with quarter of an hour left handed Nice a 2-1 win away to Claudio Ranieri's Nantes.
Nantes enjoyed a good start to the season but had won just once in four outings before this game, in which they took an early lead through Yacine Bammou.
But Alassane Plea headed Nice back level before the interval and Balotelli won it with his ninth league goal of the campaign.
A third straight league win lifts Lucien Favre's side up into the top half for the first time since early October.
Lyon, Marseille and Nice all go into the draw for the last 32 of the Europa League on Monday, while PSG will find out their opponents in the Champions League last 16.