The build-up to the game was overshadowed by talk of discontent at PSG, with Thomas Tuchel frustrated by Neymar's decision to hold a birthday party on Sunday and Kylian Mbappe reacting angrily to being substituted in Saturday's 5-0 victory over Montpellier.
The announcement that Neymar would miss the trip to Nantes with a rib injury consequently proved controversial, but Icardi and Kehrer put the visitors on the path to what looked set to be a routine win.
Moses Simon capitalised on an error from Presnel Kimpembe in the 68th minute to set up a tense final but PSG held on to make it seven straight wins in all competitions and extend their unbeaten run to 20 games.
Icardi saw his first effort in the third minute denied by Denis Petric, while Mbappe had a penalty appeal ignored after going down under pressure from Andrei Girotto.
Mbappe raced in behind the Nantes defence but lifted his attempt over, before Kimpembe saw a header cleared off the line by Abdoul Kader Bamba.
PSG got the breakthrough their attacking play deserved in the 29th minute when Mbappe sprinted beyond Girotto and cut the ball back to Angel Di Maria, whose sweeping shot found the bottom-right corner with the help of the slightest of deflections off Icardi.
Girotto's attempt to cut out a cross from Di Maria sent the ball crashing against his own crossbar early in the second half, but they doubled their lead in the 57th minute when the Argentine's corner was headed home by Kehrer.
Nantes responded positively and Kimpembe's attempt to flick a heavy pass from Marco Verratti to Kehrer was intercepted by Simon, who raced away and tucked a cool finish beyond Keylor Navas.
Substitute Thomas Meunier was kept at bay by Petric in the 90th minute and Renaud Emond missed a glorious chance to equalise in stoppage time, sending a tame volley too close to Navas.