Match ends, Zenit St Petersburg 1, Borussia Dortmund 2.
Borussia Dortmund's Youssoufa Moukoko became the youngest player to feature in a Champions League match as his side beat Zenit St Petersburg to finish top of Group F.
The forward, aged 16 years and 18 days, came on in the second half in Russia.
Dortmund fell behind to Sebastian Driussi's finish before goals by Lukasz Piszczek and Axel Witsel, after a Jadon Sancho assist, turned it around.
Lazio qualified in second place with a 2-2 draw with 10-man Club Bruges.
That match also saw former Liverpool keepers Pepe Reina, 38, and Simon Mignolet, 32, line up on opposite sides.
Dortmund, whose side included England midfielder Jude Bellingham, could face Porto or Sevilla, who are both unseeded, in the next round.
The previous youngest Champions League player was Anderlecht's Celestine Babayaro, who was 16 years and 87 days when he played - and was sent off - against Steaua Bucharest in 1994.
German Moukoko recently became the Bundesliga's youngest player too.
The draw for the last 16 takes place on Monday.
Zenit St Petersburg
- 44RakitskiySubstituted forLovrenat 67'minutes
- 3dos Santos Justino de Melo
- 27OzdoevSubstituted forKrugovoyat 79'minutes
- 8MalcomSubstituted forKaravaevat 79'minutes
- 11DriussiSubstituted forDzyubaat 60'minutes
- 14KuzyaevSubstituted forValle da Silvaat 60'minutes
- 7AzmounBooked at 10mins
- 20Valle da Silva
- 26PiszczekSubstituted forZagadouat 72'minutes
- 15HummelsSubstituted forSanchoat 72'minutes
- 30PasslackSubstituted forMoukokoat 58'minutes
- 19BrandtSubstituted forReynaat 58'minutes
- 10T HazardSubstituted forKnauffat 83'minutes
- István Kovács
- Shots on Target
Second Half ends, Zenit St Petersburg 1, Borussia Dortmund 2.
Nico Schulz (Borussia Dortmund) wins a free kick in the defensive half.
Foul by Aleksey Sutormin (Zenit St Petersburg).
Foul by Marco Reus (Borussia Dortmund).
Dejan Lovren (Zenit St Petersburg) wins a free kick in the defensive half.
Hand ball by Vyacheslav Karavaev (Zenit St Petersburg).
Attempt saved. Vyacheslav Karavaev (Zenit St Petersburg) right footed shot from outside the box is saved in the bottom left corner.
Hand ball by Youssoufa Moukoko (Borussia Dortmund).
Corner, Zenit St Petersburg. Conceded by Jude Bellingham.
Attempt blocked. Sardar Azmoun (Zenit St Petersburg) right footed shot from the centre of the box is blocked.
Attempt missed. Vyacheslav Karavaev (Zenit St Petersburg) right footed shot from outside the box misses to the left.
Corner, Zenit St Petersburg. Conceded by Nico Schulz.
Attempt blocked. Aleksey Sutormin (Zenit St Petersburg) left footed shot from the right side of the box is blocked. Assisted by Vyacheslav Karavaev.
Substitution, Borussia Dortmund. Ansgar Knauff replaces Thorgan Hazard because of an injury.
Corner, Zenit St Petersburg. Conceded by Giovanni Reyna.
Attempt missed. Artem Dzyuba (Zenit St Petersburg) header from the centre of the box misses to the right. Assisted by Douglas Santos with a cross following a corner.
Corner, Zenit St Petersburg. Conceded by Dan-Axel Zagadou.
Foul by Nico Schulz (Borussia Dortmund).
Aleksey Sutormin (Zenit St Petersburg) wins a free kick on the right wing.
- Missed out on the weekend's Premier League action? All the goals and highlights are streaming now