
Real handed the Serie A leaders their first defeat in this season’s revamped Champions League after Mbappe gave them the lead with a strike from inside the box in the 10th minute before he was forced off with an injury.
Charles de Ketelaere equalised with a penalty after Aurelien Tchouameni tripped Sead Kolasinac from behind just before the break but Vinicius Jr stroked home a rebound in the 56th minute to put the visitors back in front.
Bellingham extended their lead after a counterattack three minutes later but Ademola Lookman reduced the deficit in the 65th before Real goalkeeper Thibaut Courtois worked his magic with a string of saves to secure a hard-fought win.
With two games left, Real are 18th in the 36-team table on nine points, three points off the top eight spots which secure direct qualification to the last 16. Atalanta are ninth on 11 points.