Dortmund, last season's runners-up, went through 5-4 on aggregate after winning the first-leg in St Petersburg 4-2 three weeks ago.

"Anyone who works in football knows that Zenit aren't push-overs and the creme de la creme of European football now awaits us in the quarter-finals," said Dortmund coach Jurgen Klopp.

Wednesday's result was Dortmund's third Champions League defeat of the season after losing at Napoli and also at home to Arsenal in the group stages.

"That wasn't a perfect game, but we're through," said Poland striker Robert Lewandowski, who is suspended for the quarter-final first-leg.

"We know that we can play better than that."

Brazil star Hulk, a constant threat on the left wing, gave Zenit an early lead with a superb strike before Dortmund drew level when veteran captain Sebastian Kehl headed their equaliser just before the break.

Venezuela striker Jose Rondon, who joined Zenit in January from Russian rivals Rubin Kazan, came off the bench to head home the second-half winner.

"It was a huge task for us to come here and score three goals and unfortunately we didn't make it," said Zenit's caretaker coach Sergei Semak.

"I have to congratulate my team on a good performance, the boys did the best they could do."

Dortmund's fans voiced their discontent after the final whistle but Kehl was equally unimpressed with their response.

- Spirited display by Russians -

"We certainly didn't play our best game, but I can't understand the atmosphere in the stadium," said the 34-year-old. "We have reached the quarter-finals, that has some worth."

Zenit will unveil ex-Chelsea and Tottenham Hotspur boss Andre Villas-Boas as their new manager on Thursday.

The Russians must have impressed their new manager, having produced a spirited display and taken the game to Dortmund, nearly achieving the three goals they needed in Germany to progress.

Hulk put the guests ahead with 16 minutes gone after he cut inside two defenders and his powerful shot curled away from goalkeeper Roman Weidenfeller into the top left-hand corner.

At the other end, Lewandowski was booked on 19 minutes for a handball while leaping for a corner and the yellow card will have repercussions.

It was his third of the tournament and means he is suspended for the first leg of the quarter-final when Dortmund discover their opponents in Friday's draw.

Dortmund's left winger Kevin Grosskreutz then forced Zenit goalkeeper Vyacheslav Malafeev into a good save while Sokratis headed well over the bar as the hosts went on the attack.

Attacking midfielder Oleg Shatov nearly added Zenit's second when he fired in a shot which forced Weidenfeller to palm away.

But Dortmund went into the break level when left back Marcel Schmelzer fired in a cross, which Kehl headed home after it bounced up off the turf on 38 minutes, even though Malafeev got a glove to it.

Hulk, not short on confidence after his goal, fired over with a fierce free-kick on 51 minutes.

Things became untidy in the second half with passes going astray.

Dortmund just shaded possession, but were punished for sitting back when Rondon got in behind the defence to poach the winner on the night.

Italian left-back Domenico Criscito swung in a superb cross and Rondon slipped his marker Mats Hummels for a diving header to cause Dortmund some late nerves while Weidenfeller was forced into several saves.