The contest in Germany began 15 minutes late due to Dortmund travel problems, yet the hosts wasted little time asserting themselves.
In just the third minute, Julian Ryerson - fresh from providing four assists against Mainz in the Bundesliga - delivered a precise cross from the right. Serhou Guirassy rose to power a header beyond Marco Carnesecchi, giving Dortmund an early 1-0 lead.
Dortmund were depleted, missing Nico Schlotterbeck, Niklas Sule, Emre Can and Filippo Mane, while 18-year-old Luca Reggiani made his first Champions League start.
Reggiani's evening included the game's first booking for a late challenge on Nicola Zalewski, who posed Atalanta's greatest attacking threat with a series of dangerous deliveries.
Mario Pasalic headed wide during a spell of pressure around the 20-minute mark, but Gregor Kobel produced assured saves to preserve the lead.
Before the interval, Guirassy turned provider. After combining neatly with Felix Nmecha, he squared for Maximilian Beier to tap into an empty net for 2-0. Odilon Kossounou, Berat Djimsiti and Gianluca Scamacca were also cautioned in a fractious first half.
Atalanta coach Raffaele Palladino introduced Isak Hien and Nikola Krstovic at the break, and later Kamaldeen Sulemana for Marten de Roon, yet despite greater possession the visitors fashioned few clear chances.
Kobel denied Krstovic from distance, and Dortmund saw out the win, despite a late yellow for Waldemar Anton and further substitutions including Marcel Sabitzer.
"I'm very satisfied - we played good football, scored two goals and worked well in the second half. We were very hard-working on a few things," said Dortmund boss Niko Kovac.
"We pulled them off well tonight. Serhou Guirassy scored a goal and provided an assist, which is exactly what we need."