The Parisians were lucky to avoid defeat against a Lorient side who had lost their last eight matches and had not won a game in three months.
Saint-Etienne have drawn three of their past four matches but remain bottom of the table and without a win through 12 games of the season.
It is a perfectly acceptable result for Mauricio Pochettino's side, who have lost just one of their opening 11 matches in Ligue 1 and are seven points clear at the top from Lens in second.
A chaotic climax to the match saw Metz reduced to 10 men and have their coach Frederic Antonetti sent to the stands before Hakimi's 94th-minute strike.
Manchester United play West Ham for the second time in the space of four days when they meet in the third round of the League Cup.
Ligue 1: Portuguese midfielder Renato Sanches to be sidelined for six weeks after undergoing knee surgery
He played the entire 3-3 draw at Metz in the first round but was not in the squad for Saturday's 4-0 home loss to Nice.
Ligue 1: Burak Yilmaz scores in injury time as Lille fight to 3-3 draw against Metz; Clermont beat Bordeaux
Strasbourg suffered a 2-0 home defeat as Ismaël Traoré and Stéphane Bahoken bagged second half goals for visitors Angers.
Rayan Cherki's 89th-minute strike snatched the points for Lyon, who had lost the lead just three minutes earlier to a Wissam Ben Yedder penalty.
After an impressive 3-2 Champions League win at Bayern Munich midweek, Paris Saint-Germain now play Strasbourg on Saturday hoping to keep up their push for a fourth straight title.
Lille held on to beat PSG in a league game in the capital for the first time in a quarter of a century, with a frustrating afternoon for the hosts summed up when Neymar was dismissed.
Ligue 1: Metz striker Aaron Leya Iseka's injury-time winner ends Lyon's unbeaten streak; Lille rallies to beat Reims
Lyon were unbeaten in 16 games but were stunned by Belgian forward Aaron Leya Iseka's injury-time winner for mid-table Metz.
Christophe Galtier's men dug deep at the Stade Pierre-Mauroy to end Monaco's four-match winning streak and move back to within two points of reigning champions PSG.
PSG's Neymar was sent off for slapping Marseille's Alvaro Gonzalez on the back of the head and accused the Spaniard of calling him a 'monkey'.
Julian Draxler's header deep into stoppage time gave Paris Saint-Germain a 1-0 home win against Metz and spared the defending champion a fourth straight match without scoring.
Teenage centre-back Benoit Badiashile scored for the second game in a row at the Stade Saint-Symphorien and Monaco held on despite playing almost half the match a man down following the dismissal of Youssouf Fofana.
Ligue 1: Lyon find momentum ahead of Champions League clash against Juventus with win at Metz; Nice draw at home against Brest
Lyon hosts multiple Italian champions Juventus in the first leg of their last-16 Champions League game on Wednesday
Ligue 1: Kasper Dolberg strikes twice in Nice's win over Lyon; second-placed Marseille falter as PSG increase lead to 12 points
The first league defeat for Lyon this year left both clubs on 32 points, far behind league leader Paris Saint-Germain
Ligue 1: Marseille's six-game winning streak ends with draw at Metz; Nantes secure narrow win over Nimes
Elsewhere, ninth-place Monaco's prolific attack was blunted in a 0-0 draw at Angers; Brest drew 0-0 with Nice; and Amiens was held 1-1 at home by Dijon
Ligue 1: Clinical Lyon script comeback to end Strasbourg's unbeaten home run; Montpellier climb to fourth with win over Amiens`
On a cold evening in Alsace, Lyon suffered throughout and converted its few chances. Midfielder Jeff Reine-Adelaide snatched the winner 15 minutes from time from Maxwel Cornet’s assist after the Lyon striker canceled Strasbourg’s opener.
Mauro Icardi came off the bench to score a late winner as Paris Saint-Germain extended their Ligue 1 lead to nine points despite another unconvincing performance in a 2-1 victory at Brest on Saturday.