England secured the top spot in Group C after a goalless draw with Slovenia, avoiding a last-16 clash with hosts Germany. However, France face a challenging path to the final after a 1-1 draw with Poland on Tuesday.
Gareth Southgate's team struggled to find their best form in the tournament and delivered another lacklustre performance in Cologne. Despite their uninspiring play, they advanced as group winners thanks to a similar 0-0 draw between Denmark and Serbia in Munich, allowing Denmark to finish second ahead of Slovenia.
"That was the aim before the start of the tournament, to top the group," England captain Harry Kane told ITV. "These games are really tough. We've been here before and stepped it up in the knockouts. Hopefully we can do it again but whoever we get in the next round will be tough."
England will face one of the four best third-placed teams in Gelsenkirchen on Sunday for a spot in the quarter-finals. Denmark edged out Slovenia for the runners-up spot due to a better disciplinary record, with both teams finishing with identical records. Denmark will now face Germany in the last 16.
"It's a great team but we're a great team as well and when we play the big nations, we always step up," said Denmark coach Kasper Hjulmand.
Slovenia celebrated reaching the knockout phase of a major tournament for the first time, while Serbia was eliminated, and Croatia's exit was also confirmed.
France falters
France missed the chance to top their group despite Kylian Mbappe scoring his first European Championship goal from the spot in a 1-1 draw with Poland. Austria won a thrilling match against the Netherlands to take the top spot.
Didier Deschamps' France did not finish first in their group at a major tournament for the first time since Euro 2012, due to missed chances. "We've achieved our first objective," said Deschamps. "Even though we didn't secure the spot we were aiming for because we are second. A new competition is about to start."
Austria, having lost their opening game to France, secured a 3-2 victory over the Dutch, relegating their already-qualified opponents to third place in Group D. France, now in the half of the draw with Germany, Spain, and Portugal, will face the runners-up from Group E.
Mbappe, playing with a mask after breaking his nose, scored in the 56th minute with a penalty after Ousmane Dembele was fouled by Jakub Kiwior. Poland equalised with a penalty of their own after a foul on Karol Swiderski. Robert Lewandowski's initial effort was saved, but he scored on the retake.
Austria powers through
Dutch fans turned Berlin orange, but Austria took an early lead when Donyell Malen scored an own goal. The Netherlands equalised quickly after the restart with a goal from Cody Gakpo. Austria reclaimed the lead through Romano Schmid's header, deflected in by Stefan de Vrij.
Memphis Depay equalised again for the Netherlands, but Marcel Sabitzer's 80th-minute goal secured Austria's victory. Austria now looks forward to a match against Turkey, the Czech Republic, or Georgia in the last 16, aiming to reach the quarter-finals for the first time. The Netherlands will face the winners of Groups C or E.
"We didn't manage to play our best football. Things improved in the second half, but it wasn't enough," Gakpo told Dutch broadcaster NOS.
(With inputs from AFP)