Croatia beat Spain to win Group D and leave the holders facing a tricky last 16 tie with Italy. Goals from Nikola Kalinic and Ivan Perisic saw Croatia upset the Spanish in Bordeaux, despite playing without striker Mario Mandzukic and playmaker Luka Modric.
Both teams joined Germany, Poland and Northern Ireland in the next stage, while Turkey will be kept waiting and Ukraine and Czech Republic are out.
Germany won Group C after beating an outclassed but stubborn Northern Ireland 1-0 at Parc des Princes in Paris, thanks to a Mario Gomez goal. Poland triumphed over Ukraine 1-0 in Marseille after Jakub Blaszczykowski struck after the break.
Poland will now face Switzerland in the next round on Saturday, while Germany will face a best third-placed team on Sunday.
Here are the results from Tuesday's group matches:
|Euro 2016 Results: Tuesday Scores|
Here are the final standings for groups C and D:
|Euro 2016 Standings: Group C|
|Euro 2016 Standings: Group D|
Spain boss Vicente del Bosque picked his strongest possible side, despite having six points already in the bag, according to Squawka News. It was a sign of his respect for a Croatia team almost Spain's equal in terms of technique.
Not surprisingly, this match proved a dream for the purists with plenty of quality and intelligence on display. It was Spain who struck first when David Silva and Cesc Fabregas combined to tee up Alvaro Morata to nudge the ball over the line.
Silva's was the key pass in the move, a terrifically disguised ball between the lines. Such was the technical excellence BBC Sport's Andy West was prompted to light-heartedly wonder if Silva hadn't spent time at La Liga's current centre for creative excellence:
Speaking of creative, few players have been as prolific supplying goals in this competition as Fabregas, per the tournament's official site:
Yet, Croatia weren't overwhelmed despite Spain's early dominance. Instead, they maintained a solid shape and posed their own stylish threat whenever they got on the ball.
ESPN's Dermot Corrigan felt one Croatian player in particular stood out as an impressive attacking outlet:
It was Srna's pinpoint cross that let Kalinic equalise via an impish flick:
The former Blackburn Rovers man has been surprisingly prolific at international level, according to WhoScored.com:
Sergio Ramos should have regained the lead for Spain, but saw his penalty saved. It would prove a decisive moment.
Croatia's winner came less than five minutes from time when the brilliant Perisic made yet another expertly timed break from the inside left channel, before finishing coolly under disappointing goalkeeper David De Gea.
Spain have the best midfield at the tournament, but they are not quite as strong at both ends of the team as in previous years. The lack of a lethal centre-forward and dominant central defender could cost Del Bosque's men again, especially with Italy up next, per BBC Radio 5 live Sport.
Elsewhere in the group, Burak Yilmaz and Ozan Tufan both found the net to give Turkey a first win and condemn Czech Republic to elimination.
Germany were clearly keen to make amends after failing to show much attacking intent in the goalless draw with Poland last time out. It didn't take long for the Germans to put the Northern Ireland defence under intense pressure, per OptaFranz:
Among those who went close early on, Arsenal schemer Mesut Ozil drew a save as part of a lively opening display. The intelligent pass-master was combining well between the forward and midfield lines.
Ozil's movement and distribution helped Germany predictably boss possession, a fact highlighted by these numbers from Squawka:
Ozil was at the heart of the opener when he found Gomez with an astute ball in the final third. The target man then exchanged passes with Thomas Muller before firing home.
WhoScored.com confirmed how long it's been since Gomez found the net for his country:
It was just reward after Mario Gotze and Muller had repeatedly pounded the Northern Ireland goal.
Muller soon hit the crossbar before Gomez shot tamely after another excellent pass from Ozil. The missed chances were mounting, in a group scenario where the score would have double significance, according to Sam Borden of the New York Times:
Muller was coming close, but there was no doubt who the class act of the game was at the break, per OptaJoe:
Germany continued to create a host of chances after the break to keep Northern Ireland goalkeeper Michael McGovern busy. The stopper was forced into a particularly impressive save from a Gomez header inside the final 10 minutes.
Northern Ireland's lack of attacking initiative was best summed up by this dismal statistic involving striker Kyle Lafferty, per Squawka:
The absence of attacking threat meant Germany didn't need another goal. Despite the defeat, though, Northen Ireland still made it though, per BBC Sport.
Meanwhile, in Marseille, Ukraine almost broke the deadlock early against Poland, but Andriy Yarmolenko wasted the best chance. His anguish was clear, as the tournament's official site showed:
But Poland's own primary source of goals, striker Robert Lewandowski, was also misfiring. It's been a surprisingly familiar pattern for the usually prolific Bayern Munich No. 9, per OptaPaolo:
The Poles needed some inspiration to break the deadlock and Blaszczykowski provided it. He entered the game as a substitute at the start of the second half and soon found himself in a scoring position.
It was a delightful pass from Ajax forward Arkadiusz Milik that released him to score. The tournament's official site relayed an image of Blaszczykowski's excellent strike:
Milik struggled in front of goal against Germany, but his overall recent output for his country is excellent, according to WhoScored.com:
Resolute defending helped Poland see out the match and book a slot in the last 16.
While their progress is a surprise, Germany's was expected, even if the World Cup holders have yet to hit peak form.