Dortmund took the lead in the third minute with Sancho’s low driving shot from the edge of the area.
Edin Terzic’s side had a second goal ruled out as Niclas Fullkrug was deemed to be offside in the build-up.
Substitute Reus pounced on a PSV mistake deep in stoppage time to finish one-on-one against away goalkeeper Walter Benitez and settled the tie.
PSV had numerous opportunities to equalise, with Hirving Lozano particularly wasteful, and Peter Bosz’s side – who are 10 points clear at the top of the Eredivisie – were punished for their squandering.
Lozano, brought on as a second-half substitute, slashed wide from close range, shot straight at home goalkeeper Gregor Kobel and also missed the target from the edge of the area.
The best chance for PSV came a minute before Dortmund’s late second goal.
Luuk de Jong got on the end of a one-two but he leaned back and fired over from close range as PSV’s time in the Champions League came to a frustrating end.
The home side could have been ahead even earlier in the contest when Chelsea loanee Ian Maatsen’s fierce strike was tipped over by Benitez, before Sancho set the tone soon after and his substitute Reus secured Dortmund’s place in the last eight with his late finish.