Porto’s three-time Champions League-winning goalkeeper Casillas made his first ever appearance in the Europa League, while Thomas Tuchel made four changes to the side that beat Hannover 1-0 at the weekend, with star striker Pierre-Emerick Aubameyang returning from injury.
Aubameyang almost enjoyed the perfect start to his comeback after just three minutes when Reus slid a low cross into his path, but Martins Indi got there first to clear over the crossbar.
Both teams had failed to score in their last two European matches but Dortmund would not be denied for long, with Piszczek opening the scoring early on.
The hosts took a short corner to Henrikh Mkhitaryan and, while Casillas saved the unmarked Piszczek’s first effort, the full-back reacted quickest and headed the rebound home.
Reus had a chance to double Dortmund’s lead after 21 minutes but put a free-kick off target from 20 yards, before a sliced Marcel Schmelzer cross swerved into the side netting.
Superb flowing football by Dortmund created a chance for Shinji Kagawa on the half-hour mark, but the Japan international slipped as he hit the shot and sliced the ball well wide, before Dortmund keeper Roman Burki was involved for the first time, comfortably saving Sergio Oliveira’s driven 25-yard effort.
Dortmund had won all three of their competitive home games against Portuguese opponents and the German side were completely in control, but unable to work clear goalscoring opportunities.
After 63 minutes Kagawa went close again, but he could not divert Reus’ effort on target, although Dortmund’s second goal arrived soon after.
Kagawa fed Mkhitaryan and the Armenia international teed up Reus, who shot home with the aid of a sizable deflection off Martins Indi, before Casillas did well to tip Mkhitaryan’s header onto the post as Dortmund went in search of a third.
Burki denied Hyun-Jun Suk in the closing moments but Porto were unable to grab an away goal and face a tough task to mount a second-leg fightback.