Argentine midfielder Rodrigo De Paul pounced on Ian Maatsen's loose pass to give Atleti an early lead at the Civitas Metropolitano.
The hosts benefited from another defensive error to double their advantage through Samuel Lino's 32nd-minute effort.
Diego Simeone's side appeared to be cruising to victory until Sebastien Haller came off the bench to fire in at the near post to give Dortmund a much-needed foothold.
The German side went agonisingly close to finding a late leveller, hitting the woodwork on two occasions to leave them with a deficit to overturn in the second leg.
The raucous atmosphere at the Metropolitano seemed to have an adverse effect on the nervous-looking visitors, who gifted Atletico the opening goal within four minutes of the first whistle.
After being put under pressure by Gregor Kobel's pass, Ian Maatsen saw his reckless ball cut out by De Paul, who produced a neat finish to find the bottom corner.
Former Dortmund man Axel Witsel then drew a superb reaction save from Kobel, who was unaware the effort would have been ruled out for an offside infringement.
As the contest moved past the half-hour mark, Felix Nmecha offered Dortmund's first meaningful threat, heading over the bar from Jadon Sancho's corner.
Just moments later, Lino netted his goal of the season to take full advantage of another defensive mistake from the German side.
Miscommunication from Nico Schlotterbeck and Mats Hummels allowed Alvaro Morata to pick up the ball and feed Antoine Griezmann, who quickly teed up Lino to roll the ball beyond the helpless Kobel.
Dortmund attempted to halve the deficit before the half-time break, with Karim Adeyemi seeing his shot deflect over the bar, before Jan Oblak got down well to keep out Ian Maatsen's driven strike.
Although the visitors made a bright start to the second period, Atletico wing-back Nahuel Molina attempted to add a third goal when he cut inside and forced Kobel to make a strong near-post save.
With around 15 minutes remaining, the Dortmund goalkeeper made a superb reaction save to prevent Lino from tapping home from just a few yards out.
From nearly conceding a third, the visitors managed to halve the deficit courtesy of Haller's first Champions League goal of the season.
Molina's failed interception created the chance for Haller to swivel and fire a low shot into the bottom corner to change the complexion of the tie.
With momentum in their favour, Dortmund went close to grabbing a late equaliser, with Jamie Bynoe-Gittens rattling the woodwork with a deflected strike.
Julian Brandt then sent his header crashing against the frame of the goal in the closing moments of a gripping first leg.
With the tie finely poised, the two sides will turn their attention back to league matters before they reconvene at Signal Iduna Park next Wednesday..