Last season's runners-up dominated large parts of the Group F encounter and went ahead through an early Marco Reus penalty after Robert Lewandowski had been fouled.
Jakub Blaszczykowski doubled the advantage on the hour mark and Pierre-Emerick Aubameyang netted a third after Lorenzo Insigne had pulled one back for Napoli.
The win - Dortmund's first in four matches following three successive defeats in all competitions - lifts the Bundesliga side to second, level on points with third-placed Napoli with one match left to play.
Dortmund made one change to the side that lost 3-0 at home to Bayern Munich on Saturday, with Sebastian Kehl coming in for the ineligible Manuel Friedrich.
Napoli, who, like their hosts, had lost their last two domestic fixtures, dropped Miguel Britos, Gokhan Inler and Insigne in favour of Federico Fernandez, Blerim Dzemaili and Dries Mertens.
The match got off to the best possible start for Dortmund, who were awarded a 10th-minute penalty when Fernandez was penalised for holding on to Lewandowski in the area.
Reus made no mistake from the spot, slotting into the bottom right-hand corner as Pepe Reina dived in the opposite direction.
Lewandowski should have doubled the advantage five minutes later when he guided the ball wide of the target from just inside the 18-yard box having been played in superbly by Henrikh Mkhitaryan.
Reina got down well to his right to deny a Reus free-kick from 20 yards moments later as Jurgen Klopp's men continued to pile on the pressure.
Napoli began to find their feet as the half progressed - Goran Pandev sending their first clear-cut chance straight at Dortmund goalkeeper Roman Weidenfeller.
Jose Callejon went even closer for the visitors on the half-hour mark, but was denied by the left upright after driving an effort across the face of goal.
Dortmund, though, refused to sit back and defend their lead and Reina had to be on top form to keep out strikes from Mkhitaryan and Lewandowski before the break.
That pressure, which continued after the interval, paid off in the 60th minute as Dortmund broke following a saved Gonzalo Higuain effort. Reus found Blaszczykowski in space 18 yards out and the unmarked midfielder slipped the ball under an advancing Reina.
But Napoli put themselves right back in the game in the 71st minute as Insigne charged forward and cut a low left-footed strike into the back of the net off the right-hand post.
Aubameyang restored Dortmund's two-goal advantage seven minutes later, chipping over Reina after receiving the ball from Lewandowski.
STATS ZONE Dortmund 3-1 Napoli analysis
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.