Almog Cohen och Dario Lezcano satte upp Ingolstadt 2-0 före halvtid.
Dortmund-strejkaren Pierre-Emerick Aubameyang minskade underskottet strax före timstrecket, men Lezcano märkte sitt andra ögonblick senare.
Adrian Ramos netted för Dortmund med 20 minuter kvar och Pulisic på väg hem i tillägg tid för att slutföra comeback.
Resultatet innebar att Dortmund halkade till sjätte plats i Bundesliga på 14 punkter.
Matchändar, FC Ingolstadt 04 3, Borussia Dortmund 3.
Andra halvlek, FC Ingolstadt 04 3, Borussia Dortmund 3.
Försök missade. Pierre-Emerick Aubameyang (Borussia Dortmund) huvudet från mitten av lådan är nära, men missar till höger. Hjälpt av Felix Passlack.
Mål!  FC Ingolstadt 04 3, Borussia Dortmund 3. Christian Pulisic (Borussia Dortmund) höger fotade skott från mycket nära håll till nedre högra hörnet.
Försöket räddades. Lukasz Piszczek (Borussia Dortmund) huvud från mitten av lådan sparas i mitten av målet. Hjälpt av Felix Passlack.
Hörnet, Borussia Dortmund. Förföljd av Almog Cohen.
Ersättning, FC Ingolstadt 04. Alfredo Morales ersätter Lukas Hinterseer.
Försök missade. Marc Bartra (Borussia Dortmund) huvudet från mitten av lådan är nära, men missar till vänster. Hjälpt av Mario Götze med ett kors efter ett hörn.
Hörnet, Borussia Dortmund. Översatt av Florent Hadergjonaj.
Försöket räddades. Pierre-Emerick Aubameyang (Borussia Dortmund) höger fotad skott från mitten av lådan sparas i mitten av målet. Hjälpt av Ousmane Dembélé.
Hörnet, Borussia Dortmund. Översatt av Ørjan Nyland.
Försöket räddades. Mario Götze (Borussia Dortmund) höger fotade skott från mitten av lådan sparas i nedre högra hörnet. Hjälpt av Adrián Ramos med ett nyckelkort.
Julian Weigli (Borussia Dortmund) vinner en frispark i defensiva halvan.
Foul av Lukas Hinterseer (FC Ingolstadt 04).
Felix Passlack (Borussia Dortmund) vinner en frispark i defensiva halvan.
Foul av Moritz Hartmann (FC Ingolstadt 04).
Försök missade. Christian Pulisic (Borussia Dortmund) huvudet från mitten av lådan missar till höger. Hjälpt av Felix Passlack.
Handboll av Christian Pulisic (Borussia Dortmund).
Försök missade. Ousmane Dembélé (Borussia Dortmund) höger fotade skott utanför lådan är för hög. Hjälpt av Mario Götze efter ett hörn.
Hörnet, Borussia Dortmund. Översatt av Ørjan Nyland.
Försöket räddades. Felix Passlack (Borussia Dortmund) höger fotade skott från utsidan boxen sparas i nedre högra hörnet. Hjälpt av Mario Götze.
Försening över. De är redo att fortsätta.
Försening i matchen Almog Cohen (FC Ingolstadt 04) på grund av en skada.
Hörnet, Borussia Dortmund. Översatt av Florent Hadergjonaj.
Ersättning, Borussia Dortmund. Felix Passlack ersätter Shinji Kagawa.
Handboll av Christian Pulisic (Borussia Dortmund).
Handboll av Lukas Hinterseer (FC Ingolstadt 04).
Ersättning, FC Ingolstadt 04. Mathew Leckie ersätter Darío Lezcano.
Adrián Ramos (Borussia Dortmund) visas det gula kortet för en dålig foul.
Foul av Adrián Ramos (Borussia Dortmund).
Florent Hadergjonaj (FC Ingolstadt 04) vinner en frispark i defensiva halvan.
Foul av Marc Bartra (Borussia Dortmund).
Moritz Hartmann (FC Ingolstadt 04) vinner en frispark på högerkanten.
Mål!  FC Ingolstadt 04 3, Borussia Dortmund 2. Adrián Ramos (Borussia Dortmund) höger fotade skott från mitten av lådan till mitten av målet. Hjälpt av Christian Pulisic.
Försening över. De är redo att fortsätta.
Försening i match Lukas Hinterseer (FC Ingolstadt 04) på grund av en skada.
Foul av Mario Götze (Borussia Dortmund).
Almog Cohen (FC Ingolstadt 04) vinner en frispark på vänsterflygeln.
Försök blockerat. Almog Cohen (FC Ingolstadt 04) höger fotade skott utanför lådan är blockerad.
Mario Götze (Borussia Dortmund) vinner en frispark i defensiva halvan.
Borussia Dortmund mittfältare Christian Pulisic gjorde en dramatisk skade-tid utjämnare för att rädda en punkt mot Bundesliga kämparna Ingolstadt.