Borussia Dortmund secured their spot in the last 16 of the Champions League on Tuesday with a 3-1 win at AC Milan, who are staring early elimination in the face.

Marco Reus' early penalty and second-half strikes from English teenager Jamie Bynoe-Gittens and Karim Adeyemi secured Dortmund's passage into the next round with a match to spare.

Dortmund have been criticised for their domestic form but are top of Group F on 10 points thanks to their third straight win in the competition, which came against a Milan team off-form and riddled with injuries.

A draw with Paris Saint-Germain in Germany in their final group match next month will be enough for Edin Terzic's team to guarantee first place and a softer draw in the last 16.

"It was a great night...  when the team plays well, it's easier for the individual," said Mats Hummels.

"Now we want to get first spot, and avoid the crazy good teams."

Milan, whose returning striker Olivier Giroud failed to net an early penalty, reached the semi-finals last season but sit bottom of the group on five points and have a job on their hands to progress.

However, the tight nature of the group and Newcastle United's draw at Paris Saint-Germain has left the door ajar for the hosts, who equalised through Samuel Chukwueze in the 37th minute.

Milan are two points behind second-placed PSG and will make the knockout rounds if they win at Newcastle and the French champions lose at Dortmund.

"We'll give everything at Newcastle and try to win the game... I'd say we have about a two-to-three percent chance of qualifying," admitted disappointed Milan midfielder Yacine Adli.

"We'll do everything we can and hope that Dortmund get a positive result."

Dortmund punish Milan

The match got off to a frantic start and Milan could have been ahead very early on when a flashed low cross missed both Chukwueze and Olivier Giroud.

France striker Giroud then wasted the perfect chance to give Milan the lead from the penalty spot in the seventh minute after Nico Schlotterbeck clumsily handled a Chukwueze shot.

And Reus punished the hosts in the 10th minute by showing how Giroud how to take a spot-kick when Davide Calabria brought down Bynoe-Gittens.

Milan have struggled to score goals in recent weeks and kept bouncing back off a yellow wall until Chukwueze weaved a bit of magic down the right flank, cut inside and flashed his finish past Gregor Kobel.

Chukwueze's first goal since signing from Villarreal made him the second Nigerian to score for Milan since Taribo West in 2000.

Calabria then missed a great chance to snatch the lead in first-half stoppage time when he headed Christian Pulisic's floated cross agonisingly across the face of goal.

Milan pushed but without star winger Leao lacked cutting edge and -- after suffering another injury blow when Milack Thiaw pulled up with a hamstring injury -- the wind was pulled from their sails in the 59th minute, Bynoe-Gittens sweeping in his first Champions League goal from Marcel Sabitzer's smart flick.

Ten minutes later, Adeyemi made sure Dortmund would go through with his first goal of the season, cutting inside Calabria before letting off a rocket to which Mike Maignan got a hand but could not stop from just about squirming over the line.

Luka Jovic, who is yet to score for Milan, then hit the post with a header with five minutes remaining before Niclas Fuellkrug rattled the bar with a powerful shot moments later.

And that was it for Milan, who now have to rediscover their mojo in front of goal and hope for a favour from Dortmund in order to join the Bundesliga outfit the next round.