The Gabonese forward converted with a header to put the hosts out of the DFB-Pokal and fire Jurgen Klopp's men into the semi-finals
The Schwarzgelben were the better side in the opening half, but their one-touch football was regularly followed by poorly timed final balls and off-target finishes.
Die Adler came out the second half stronger but gradually lost their head of steam and were clinging to the draw in the hope of extra-time.
It was Gabonese forward Aubameyang who grabbed the crucial goal for BVB and propelled his side into the last four of the German cup competition with a header seven minutes from time.
Injury-hit Dortmund have fallen off the pace in the Bundesliga and the DFB-Pokal looked like their best chance of getting further silverware this season heading into the tie at the Commerzbank Arena.
Aubameyang's pace triggered the first chance of the game 13 minutes in, sprinting down the right before squaring for Henrikh Mkhitaryan, but the Armenian attacker skidded his effort inches wide of the post.
At the other end, Frankfurt could have taken an unlikely lead but Sebastian Rode's got his feet stuck beneath him and failed to make contact on a tempting, low cross.
Jurgen Klopp's men almost made the hosts pay by counterattacking with Aubameyang, who this time offloaded to Kevin Grosskreutz for the midfielder to force a save from Kevin Trapp from outside the box.
The Gabon forward had a chance of his own to put the visitors ahead but his 30-yard free kick flew marginally wide of the top-left corner.
Mkhitaryan really should have put away his strike 10 yards out an angle but skewed his shot wide, and not long afterwards - with half-time looming - Grosskreutz similarly wasted a chance by lofting his strike over the crossbar.
The hosts brought on Jan Rosenthal at the break and looked a totally different team for the following 20 minutes, turning the momentum in their favour.
Although clear chances were at a premium, Sebastian Jung had the best opportunity but he hit way wide of target when in acres of space from a Frankfurt counterattack on the right edge of the Dortmund box.
Midway through the half, the game devolved into constant theatrics from Frankfurt's Carlos Zambrano and BVB's Robert Lewandowski, who were frustrating each other with niggling tackles and over-the-top reactions.
Klopp's men rallied in the final 20 minutes, however, and looked increasingly likely to break the deadlock and avoid the added 30 minutes at full-time.
A Henrik Mkhitaryan corner with 83 minutes gone was flicked on by Dortmund captain Sebastian Kehl and it was Aubameyang who dumped Frankfurt out of the tournament with a header at the back post which flew into the back of the net.
The hosts could not muster the energy to create a comeback and Dortmund dropped the tempo to ease into the semi-finals of the DFB-Pokal.