The Champions League group stages are over – with all four English teams safely through.
There was plenty of late drama in the final week, with Tottenham and Benfica securing top spot in their groups thanks to added-time goals.
Rangers and Celtic are out of Europe altogether.
So who is through and who is out?
Group A
1 – Napoli (Q) | 6 | 5 | 0 | 1 | +14 | 15 |
2 – Liverpool (Q) | 6 | 5 | 0 | 1 | +11 | 15 |
3 – Ajax (EL) | 6 | 2 | 0 | 4 | -5 | 6 |
4 – Rangers (X) | 6 | 0 | 0 | 6 | -20 | 0 |
Tuesday: Liverpool 2-0 Napoli,Rangers 1-3 Ajax
Liverpool finish second behind Napoli. They ended the group stage with a 2-0 win against the Italians, but would have needed to win by two more to overtake them at the top.
Ajax go into the Europa League and Rangers finish bottom with the worst record in the history of the Champions League group phase.
Group B
1 – Porto (Q) | 6 | 4 | 0 | 2 | +5 | 12 |
2 – Club Bruges (Q) | 6 | 3 | 2 | 1 | +3 | 11 |
3 – Bayer Leverkusen (EL) | 6 | 1 | 2 | 3 | -4 | 5 |
4 – Atletico Madrid (X) | 6 | 1 | 2 | 3 | -4 | 5 |
Tuesday: Bayer Leverkusen 0-0 Club Bruges, Porto 2-1 Atletico Madrid
Porto became just the second team to win a Champions League group despite losing their first two games, beating Atletico Madrid in their final game to seal top spot.
Atletico are out of Europe before Christmas for the first time since 2010-11.
Bayer Leverkusen’s point against already qualified Club Bruges sent them into the Europa League.
Group C
1 – Bayern Munich (Q) | 6 | 6 | 0 | 0 | +16 | 18 |
2 – Inter Milan (Q) | 6 | 3 | 1 | 2 | +3 | 10 |
3 – Barcelona (EL) | 6 | 2 | 1 | 3 | 0 | 7 |
4 – Viktoria Plzen (X) | 6 | 0 | 0 | 6 | -19 | 0 |
Tuesday: Bayern Munich 2-0 Inter Milan, Viktoria Plzen 2-4 Barcelona
All four group positions were decided after five games, making Bayern Munich and Barcelona’s wins largely redundant.
Group D
1 – Tottenham Hotspur (Q) | 6 | 3 | 2 | 1 | +2 | 11 |
2 – Eintracht Frankfurt (Q) | 6 | 3 | 1 | 2 | -1 | 10 |
3 – Sporting Lisbon (EL) | 6 | 2 | 1 | 3 | -1 | 7 |
4 – Marseille (X) | 6 | 2 | 0 | 4 | 0 | 6 |
Tuesday: Marseille 1-2 Tottenham, Sporting Lisbon 1-2 Eintracht Frankfurt
Tottenham Hotspur and Eintracht Frankfurt went through after a dramatic finale to Group D. At half-time both sides trailed 1-0 and would have exited the tournament, but they both went through with comeback wins.
Marseille pushed for a winner against Spurs that would have taken them into the Champions League knockout stages, but instead conceded a late goal that knocked them out of a Europa League place and sent Spurs top.
Group E
1 – Chelsea (Q) | 6 | 4 | 1 | 1 | +6 | 13 |
2 – AC Milan (Q) | 6 | 3 | 1 | 2 | +5 | 10 |
3 – Salzburg (EL) | 6 | 1 | 3 | 2 | -4 | 6 |
4 – Dinamo Zagreb (X) | 6 | 1 | 1 | 4 | -7 | 4 |
Wednesday: Chelsea 2-1 Dinamo Zagreb,AC Milan 4-0 Salzburg
AC Milan thrashed Salzburg in their group finale to reach the last 16. The Austrian side would have gone through with a win – but instead drop into the Europa League.
Chelsea had already sealed top spot in the group before beating Dinamo Zagreb.
Group F
1 – Real Madrid (Q) | 6 | 4 | 1 | 1 | +9 | 13 |
2 – Leipzig (Q) | 6 | 4 | 0 | 2 | +4 | 12 |
3 – Shakhtar Donetsk (EL) | 6 | 1 | 3 | 2 | -2 | 6 |
4 – Celtic (X) | 6 | 0 | 2 | 4 | -11 | 2 |
Wednesday: Real Madrid 5-1 Celtic,Shakhtar Donetsk 0-4 RB Leipzig
Leipzig reached the last 16 with a comfortable win against Shakhtar Donetsk in Poland. The Ukrainian side – who would have gone through with a win – are in the Europa League now.
Real sealed top spot by hammering already eliminated Celtic.
Group G
1 – Manchester City (Q) | 6 | 4 | 2 | 0 | +12 | 14 |
2 – Borussia Dortmund (Q) | 6 | 2 | 3 | 1 | +5 | 9 |
3 – Sevilla (EL) | 6 | 1 | 2 | 3 | -6 | 5 |
4 – FC Copenhagen (X) | 6 | 0 | 3 | 3 | -11 | 3 |
Wednesday: Manchester City 3-1 Sevilla, Copenhagen 1-1 Borussia Dortmund
All four group positions were decided before the final games, making the results largely academic.
Group H
1 – Benfica (Q) | 6 | 4 | 2 | 0 | +9 | 14 |
2 – Paris St-Germain (Q) | 6 | 4 | 2 | 0 | +9 | 14 |
3 – Juventus (EL) | 6 | 1 | 0 | 5 | -4 | 3 |
4 – Maccabi Haifa (X) | 6 | 1 | 0 | 5 | -14 | 3 |
Wednesday: Juventus 1-2 Paris St-Germain, Maccabi Haifa 1-6 Benfica
Benfica beat Paris St-Germain to top spot on away goals after both sides finished exactly level on everything else.
A 92nd-minute goal from Benfica to give them a 6-1 win meant for the first time in Champions League history the top two teams in a group had the same wins, draws, defeats, points, goals scored and goals conceded.
Juventus beat Maccabi Haifa to the Europa League place on goal difference.