In a game played at a relentless tempo, packed with incident, Salah opened the scoring – with a helping touch from James Milner – and Naby Keita thumped home a volley to give the Reds a 2-0 advantage by the 13th minute.
But Diego Simeone’s seasoned Atletico turned the tide as the half wore on and got level courtesy of Antoine Griezmann’s double – a nudge in from Koke’s shot and then a precise angled drive.
Griezmann was sent off in the early stages of the second half and the away team edged in front once more when Salah stroked in a low penalty 12 minutes from full-time.
Atletico almost had a subsequent spot-kick of their own, but the referee reversed his decision after reviewing via the VAR, and Jürgen Klopp’s men secured the win.
It means Liverpool are now five points clear of both Atletico and FC Porto in the section, the latter having defeated AC Milan on the night.
Bitesize: Atletico Madrid 2-3 Liverpool
Team news
Klopp opted for a single change to the starting XI that won 5-0 at Watford as Alisson Becker returned in goal, replacing Caoimhin Kelleher.
Roberto Firmino made his 300th appearance for the club.
First half
Liverpool made an assured start in possession in the Spanish capital and took the lead in the eighth minute.
Andy Robertson’s deep cross was recycled by Salah, who skipped past a series of challenges as he moved inside from the flank towards the edge of the box to create a shooting angle.
When the Egyptian did eventually strike, his low effort benefited from a touch along the way – seemingly from Milner – and whistled past a helpless Jan Oblak into the bottom left corner.
UEFA officially awarded the goal to Salah, making him the first Reds player in history to score in nine consecutive appearances in all competitions.
There could be no confusion about the scorer of Liverpool’s second of the night, however.
Keita produced another exquisite first-time volley, the No.8 imperiously moving onto a clearance by Felipe and slamming his shot inside the right-hand post from 20 yards.
Back came Atletico, though, and Trent Alexander-Arnold was at full stretch to hook away Griezmann’s sweeping cross from the right corner of the area with Yannick Carrasco poised to pounce.
But from the resulting corner, Thomas Lemar escaped Keita to attack the byline and Koke side-footed his delivery across the face of goal, where Griezmann touched the ball into the Liverpool net, a VAR check confirming their deficit was halved.
The France international might have bagged his second after scampering in behind one-on-one with Alisson, but the Liverpool goalkeeper blocked the attempted dink.
But it was a brief respite and Griezmann did haul Atletico on level terms with 34 on the clock; Joao Felix broke away from Keita and guided a diagonal to Griezmann, who moved past Virgil van Dijk into the box and slotted across Alisson.
Momentum had completely swung and the Reds were grateful for Alisson’s close-range saves to thwart Felix and then Lemar to keep it 2-2 at the interval.
Second half
Klopp made a switch at the start of the second half, introducing Fabinho into the midfield in place of Keita.
The 15-minute pause had no impact on the frenetic tempo of the contest and Alisson was quickly called into important action once more.
Carrasco swapped neat passes with Rodrigo de Paul at the edge of Reds territory and drove into the area, but his aim to clip over the Liverpool No.1 was blocked.
Atletico’s buoyancy was tempered on 52 minutes, though, with Griezmann shown a straight red card by referee Daniel Siebert for a high boot in the face of Firmino.
Robertson lashed a decent hit over Oblak’s crossbar as Klopp’s men set about trying to make their numerical advantage count, a plan that soon included a double change by the boss.
Diogo Jota and Alex Oxlade-Chamberlain were summoned from the bench as Sadio Mane and Milner made way with half an hour still to go.
And Jota had a hand in what proved to be the winning goal, the Portugal international bundled over by Mario Hermoso as he tried to reach Alexander-Arnold’s hoist into the area.
Salah placed the 78th-minute penalty to his left as Oblak dived in the opposite direction and it gained a big three points for the Reds after the initial decision to award Atletico a penalty – Jose Gimenez going down under a challenge from Jota – was changed.