Saul Niguez and Antoine Griezmann scored to put the Spanish side two goals up at the interval, but Leverkusen pulled one back through Karim Bellarabi at the start of the second half.
A Kevin Gameiro penalty then restored Atletico's two-goal advantage just before the hour mark, and while a Stefan Savic own goal gave Leverkusen hope again, Fernando Torres came off the bench to make it 4-2 late on.
Leverkusen started brightly, while Atletico looked to hit them on the break, and in the opening 10 minutes both had chances.
But in the 17th minute, the away side pounced. Cutting in from the right, Saul Niguez curled a fine shot into the far corner from the edge of the penalty area.
More From This Section
Atletico then grasped the game by the scruff of the neck and in the 25th minute a mistake by Aleksandar Dragovic allowed Gameiro to run at goal. He then squared the ball to Griezmann, who rifled a shot past Bernd Leno.
Only a fine stop by Leno at the other end prevented Griezmann from scoring again but Leverkusen quickly pulled a goal back at the start of the second half. Benjamin Henrichs found space on the right and delivered a low cross which Karim Bellarabi turned into the far corner.
It was no less than the Leverkusen forwards deserved, but their defence continued to struggle. Gameiro first hit the bar before extending Atletico's lead from the penalty spot just before the hour mark.
Leverkusen refused to give up, and an own goal gifted them another route back into the game on 66 minutes.
Fresh off the bench, Joel Pohjanpalo delivered a fine cross which ricocheted off Savic and into the Atletico net.
At 3-2, the hosts looked invigorated, and Javier Hernandez nearly equalised with 10 minutes to go, his shot cleared just in front of the line by Filipe Luis.
It was substitute Torres who secured the win late on, heading the ball in at the near post to make it 4-2 with just four minutes to play.