The German champion dominated its opponent from start to finish at the Westfalenstadion, and claims a deserved place in the last eight.
The two sides had played out a tense 2-2 draw in Ukraine three weeks ago, but the Germans took the lead here through Felipe Santana on the half-hour mark, with Mario Gotze doubling the lead soon after.
The Miners rallied after the break, but all hopes of a comeback were killed off when Jakub 'Kuba' Blaszczykowski made it three.
Just as in the first leg, it was Dortmund which started the game the better of the two sides. Within minutes of the off, the club had won a corner which Robert Lewandowski met, only to make poor contact on the ball and have it blocked.
Soon after, Gotze had picked out the Polish striker who failed to get his shot away in good time, allowing Andriy Pyatov to scurry off his line and block the eventual strike from close range.
And so it continued. Marcel Schmelzer forced one across the box, almost finding Gotze, who flung out a leg, but could not make clean enough contact on the ball to force it into the net.
Lukasz Piszczek and Gotze wasted further opportunities to give their side the lead, but on the half-hour mark, Dortmund finally had a deserved advantage, with Santana meeting a right-wing corner with a magnificent header which Pyatov could never have stopped.
Seven minutes later, the home side was well and truly in control of the tie. Lewandowski found space down the right and squared it to Gotze, who sent a delicate flick past the keeper and into the corner of the net.
More hesitance from the Polish striker denied the Germans a third, with Oleksandr Kucher making a good block, and it would have been no less than the team deserved after a dominant first half.
Indeed, the closest Shakhtar came to a reply was in stoppage time, when Fernandinho strode down the right and miscued a cross, almost catching out Roman Weidenfeller, who was forced to back peddle and tip it over the bar.
Mircea Lucescu withdrew Taison and introduced Douglas Costa at the break, and the Brazilian almost had an instant impact, driving wide after being set up by Luiz Adriano.
Alex Teixeira and Fernandinho came close to giving a much-improved Shakhtar a path back into the match, while at the other end, Pyatov was forced into decent saves to deny Marco Reus and Gotze.
The Miners' frantic start to the second period had died down, and their chances of progression were dealt a definitive blow just before the hour mark.
Pyatov clumsily spilled an Ilkay Gundogan effort right into the path of Blaszczykowski, who kept his composure to lift the ball over the sprawling goalkeeper and make it 3-0.
Dortmund was heading for the last eight, and missed chances to give itself a four-goal advantage when Gotze fired wide, Lewandowski failed to read Marco Reus' pass and Kevin Grosskreutz had a lovely shot tipped wide.
At the other end Yaroslav Rakytskyy had two efforts saved by Weidenfeller, who had enjoyed a quiet evening, but was alert enough to deny Luiz Adriano from close range after a deflected effort fell into the Brazilian's path.
In the end, though, BVB could not muster a flattering fourth and Shakhtar could not find a consolation, and the home side progressed to the last eight.