RB Leipzig became the first side to beat Real Madrid in the Champions League this year while in another game competition favourites Manchester City were held to a goalless draw by hosts Borussia Dortmund.
Having already qualified for the next stage of the competition, Real travelled to Germany looking to maintain their winning momentum but were stunned 3-2 with a rotated side failing to deal with the hosts’ tenacity.
Their early domination paid off in the 13th minute when Josko Gvardiol put the ball into the net after Thibaut Courtois had initially denied Andre Silva. With the defending champions on the ropes, Christopher Nkunku put away a fortunate deflection to score the second goal in the 18th minute.
Courtois managed to keep his side in the contest by denying Amadou Haidara before Nkuku missed an open net with the keeper beaten.
Vinicius Jr brought Real back before the break with a header but Timo Werner scored late in the second to put his side 3-1 up before a late Rodrygo penalty restored some pride for the La Liga champions.
The win takes RB Leipzig second in the Champions League Group F table behind Real Madrid with the Germans needing just a draw in their next game against Shaktar to progress.
Meanwhile, Riyad Mahrez missed a second consecutive penalty as Man City could only manage another draw in the competition against Borussia Dortmund.
The Premier League champions are guaranteed a spot in the next round as group toppers.
Chelsea, Sevilla and AC Milan also earned wins during Matchday 5.