Lewandowski, who joined Dortmund four seasons ago from Polish side Lech Posen, brought up his landmark goal when he scored his team's second shortly before half-time.

The 25-year-old could well face his future club Bayern Munich -- whom he joins at the end of the season -- in the May 17 final as the holders play second division Kaiserslautern at Munich's Allianz Arena in Wednesday's other semi-final.

Lewandowski, who scored a hat-trick in the 2012 Cup final when Dortmund routed Bayern 5-2, has vowed to leave the club having delivered silverware this season and he final will be his last chance.

"We're in the final, so all is well," said Dortmund coach Jurgen Klopp, who has replaced Lewandowski already for next season with Colombia striker Adrian Ramos arriving from rivals Hertha Berlin.

"Knowing the quality of Wolfsburg, it was always going to be close."

Dortmund took an early lead when midfielder Henrikh Mkhitaryan cut in from the right and unleashed a superb shot just inside the near post, past Wolfsburg goalkeeper Max Gruen and three defenders on 12 minutes.

With half-time approaching, Belgium Under-21 international Junior Malanda hit the post for Wolfsburg and compatriot Kevin de Bruyne fired the rebound wide for the visitors.

It was a costly miss as Dortmund went 2-0 up 72 seconds later when Germany play-maker Marco Reus found Lewandowski unmarked and he slammed his shot into the top left-hand corner to reach his milestone.

Malanda squandered a golden chance to put his side back in the game 15 minutes from the final whistle when he fired over with the goal at his mercy.

Wolves' ex-Bayern midfielder Luiz Gustavo then hit the post in the dying stages after Malanda had a shot saved by Dortmund goalkeeper Roman Weidenfeller.

The night ended badly for the Belgian as he had to be helped off after being injured in a goal-mouth collision.

There was more good news for Dortmund before kick-off when injury-hit Germany midfielder Ilkay Gundogan signed a one-year extension to keep him at Borussia until 2016 despite having last played in August due to a back injury.