The game was originally set to be played on Tuesday evening, but was postponed after three explosions went off near the Borussia Dortmund team bus as the players made their way to the Westfalenstadion.
The blasts injured defender Marc Bartra, and the 26-year-old was subsequently taken to hospital with arm and hand injuries - which required surgery.
With Bartra ruled out of the rearranged game on Wednesday night and with Dortmund reeling from the attack, it was Monaco who started the game the better of the two sides with Mbappe - who has now scored 18 goals in all competitions for Monaco this season - handing the visitors the lead in the 19th minute.
The 18-year-old latched onto Thomas Lemar's pinpoint cross and drove the ball in from close range to open the scoring, although replays showed he had been in an offside position.
Yet it proved a huge goal for the visitors especially as it came just minutes after Fabinho had driven his penalty, awarded for Sokratis Papastathopoulos' foul on Mbappe in the area, wide.
Monaco then doubled their advantage in the 35th minute when Sven Bender, under pressure from striker Radamel Falcao, headed Andrea Raggi's cross into the back of his own net.
Monaco continued to pressurise and indeed dominate the game, which raised questions as to how much the attack on Tuesday had affected the Dortmund players.
But the hosts returned from the break with a renewed sense of purpose and got one back through Ousmane Dembele, who tapped in from close range in the 57th minute.
Mbappe, however, restored Monaco's two-goal advantage when he capitalised on an error in the Dortmund defence to race clear and coolly drive past goalkeeper Roman Burki.
Shinji Kagawa then netted a superb solo goal six minutes from time which keeps Thomas Tuchel's men in the tie, with the second leg set to be played in the south of France on Wednesday 19 April.