In other games, Karim Benzema netted for Real Madrid as the 13-time European champions thrashed Shakhtar Donetsk 5-0 in Ukraine
Liverpool survived an Atletico Madrid fightback to win 3-2 and Lionel Messi scored twice as Paris Saint-Germain came from behind to beat RB Leipzig by the same score on a breathless night of Champions League action on Tuesday.
In other games, Karim Benzema netted for Real Madrid as the 13-time European champions thrashed Shakhtar Donetsk 5-0 in Ukraine on the eve of the start of his trial in France on charges of complicity in blackmail.
Much of the night's drama happened at the Wanda Metropolitano in the Spanish capital where Mohamed Salah scored another impressive goal, twisting away from a string of Atletico defenders before his shot deflected in off James Milner to open the scoring.
Naby Keita doubled Liverpool's lead with a stunning volley but Atletico hit back with French international Antoine Griezmann scoring twice to fire up the home crowd.
⏰ RESULTS ⏰— UEFA Champions League (@ChampionsLeague) October 19, 2021
🤤 35 goals, drama and comebacks!
🔥 Champions League football 🔥
😎 Game of the day?#UCL
Just as Atletico seemed to have the upper hand, Griezmann was given a straight red card for a high boot in the face of Roberto Firmino.
A pulsating game was decided from the penalty spot in the 78th minute as Salah sent Jan Oblak the wrong way after Mario Hermoso pushed Diogo Jota. The Egyptian's 31st Champions League goal makes him the club's top scorer in the competition, overtaking Steven Gerrard.
In a dramatic finish, Atletico were denied a penalty when the referee studied the VAR and decided Jota had not fouled Jose Maria Gimenez.
Liverpool manager Jurgen Klopp told BT Sport: "We played a really solid second half in a tough game with intense football from both teams.
"We got the penalty, then there was a red card and obviously it was in our favour."
The Reds are top of Group B with three wins out of three while Atletico are equal on four points with Porto, who beat AC Milan 1-0 in Portugal.
- Mbappe penalty -
At the Parc des Princes, Messi scored twice and Kylian Mbappe sparkled but later missed a penalty as PSG came from behind to beat RB Leipzig 3-2.
Mbappe had given the Qatar-backed club the lead but a Leipzig side crushed 6-3 at Manchester City earlier in the competition held their own.
Leipzig went ahead through goals from Andre Silva and Nordi Mukiele as PSG suddenly looked disjointed.
But Messi was set up by Mbappe for the equaliser and then deftly chipped in a 74th-minute penalty awarded for a foul on the France striker. Mbappe's missed spot kick proved unimportant.
PSG top Group A with seven points but Manchester City bounced back from their defeat in Paris in the last matchday by crushing Club Brugge 5-1 in Belgium.
Pep Guardiola declared City's win "one of the best performances in Europe we've done so far" after Riyad Mahrez scored twice and 19-year-old Cole Palmer was among City's scorers.
In Kiev, Benzema, who is due to go on trial in France on Wednesday in the "sextape" case involving his former international teammate Mathieu Valbuena, scored the final goal in Real's rout of Shakhtar.
A first-half own goal from Serhiy Kryvtsov put Real on their way before Vinicius Junior scored two superb goals and set up Rodrygo for the fourth before Benzema completed the job.
Sheriff Tiraspol's fairytale run of results in the competition ended with a 3-1 defeat at Inter Milan.
Goals from Edin Dzeko, Arturo Vidal and Stefan de Vrij sealed the win over the side from Moldova but Sheriff remain top of Group D despite having the same number of points as Real.
Inter secure first win...— UEFA Champions League (@ChampionsLeague) October 19, 2021
🤔 Who's going through from Group D?#UCL
Borussia Dortmund and Erling Braut Haaland had an off night as they were beaten 4-0 by Ajax at the Amsterdam Arena.
Former West Ham striker Sebastien Haller scored his sixth Champions League goal in three games as Ajax took an iron grip on Group C with a maximum nine points. Dortmund are second on six points.