Two early goals set the stage for Dortmund to run out to a 4-2 away win over the Russian outfit.
Henrikh Mkhitaryan and Marco Reus punished a lackluster start from the Russian side, which was playing a competitive fixture for the first time since Dec. 11, as last year's runner-up significantly enhanced its chances of reaching the quarterfinals.
Oleg Shatov pulled a goal back for the home side 12 minutes into the second half, only for Robert Lewandowski to swiftly restore Dortmund's two-goal advantage with his fifth goal in the competition this season.
A penalty from Hulk in the 69th minute brought Zenit back within a goal once again, yet the home team then allowed Lewandowski too much room in the penalty area and the Poland international doubled his tally.
The two sides meet again on March 19 with the Bundesliga side holding a considerable advantage having managed four away goals.
Dortmund took control of the game almost immediately as Zenit struggled to get back into the swing of competitive football.
Reus, starting his first game in three weeks, was immediately on the offensive and jinked his way into the penalty area in the fourth minute. The 24-year-old could have gone down under the challenge of a defender but instead touched the ball to Mkhitaryan, who swept home.
A minute later Dortmund was two goals ahead with Mkhitaryan and Reus again involved. Kevin Grosskreutz laid the Armenian's right-wing cross into the path of Reus and the latter sent a left-footed volley under Yuri Lodygin.
The Russian Premier League leader slowly worked back into the game, but was initially unable to test Roman Weidenfeller.
With half an hour played Dortmund came close to extending the lead as Lukasz Piszczek and Reus exchanged passes on the edge of the penalty area. The ball broke for the forward but his curling effort flew just wide of Lodygin's goal.
After withstanding another strong start in the second half, Zenit halved the deficit through Shatov, although there were hints of offside in the build up.
Salomon Rondon and Shatov both appeared to be offside when the ball was played into the penalty area, but play continued and the Venezuelan striker hit the post before Shatov fired home.
Zenit was only level for four minutes as Lewandowski played a one-two with international teammate Piszczek and beat Lodygin with a low strike.
A clumsy challenge by Piszczek on Viktor Fayzulin in the 68th minute saw Zenit awarded a penalty, which Hulk emphatically converted.
Yet Lewandowski offered another quick reply, firing low across Lodygin to seal the win in the 71st minute after Reus had robbed Anatoliy Tymoshchuk inside the Zenit half.