Match ends, Croatia 0, Portugal 1.
Croatia 0-1 Portugal
Ricardo Quaresma scored late in extra time as Portugal defeated Croatia to set up a Euro 2016 quarter-final match against Poland.
The substitute headed in from two yards after keeper Danijel Subasic could only palm Cristiano Ronaldo's shot into the path of the Besiktas winger.
The contest was a turgid affair for much of the 120 minutes.
Croatia's Domagoj Vida and Marcelo Brozovic went close with headers, and Ivan Perisic's effort hit the bar.
Portugal's last-eight match will take place at the Stade Velodrome in Marseille on Thursday.
A poor encounter
The match in Lens was abysmal.
There were no efforts on target until the goal in the 117th minute, creativity was lacking, passes misplaced and the game was blighted by niggly fouls, with 18 in the first half alone.
The respective defences got on top of their marked men early in the match, with the lauded La Liga trio of Ronaldo and Croatia's Luka Modric and Ivan Rakitic suffocated for space.
Ronaldo looked more frustrated than he had in other matches. He dropped deep and pulled out wide in a bid to get involved, but the ball to him was cut out more often than not. His 33 passes were the third fewest of the Portugal starting XI, although he did provide the crucial assist for Quaresma.
That goal came on the counter-attack just a minute after Perisic's header had struck the Croatia bar. Another substitute Renato Sanches drove forward with the ball and found Nani, who in turn laid the ball to Ronaldo at the far post.
The Real Madrid star fired in a low angled shot that Subasic blocked, but the loose ball looped into the path of Quaresma, who was left with a very simple task.
Croatia crack at crucial moment
Coach Ante Cacic's men had gone from dark horses to one of the favourites for the title after three impressive displays in Group D, including a 2-1 win over Spain.
But against Portugal their form went missing. Playmakers Rakitic and Modric were scrapping for possession, and winger Ivan Perisic, who had been a potent weapon with his driving runs, only impressed with his hairstyle.
Their best chances fell to the impressive defender Domagoj Vida. The Dynamo Kiev centre-back twice went close with headers and almost took the match to penalties with another effort.
Man of the match - Domagoj Vida (Croatia)
'If there is a favourite, it's Portugal'
Croatia boss Ante Cacic: "Of course I'm sad. We had a great chance and a good draw.
"We knew if we beat Portugal we'd play Poland, but that's tournaments. We always have to play against strong teams. I can only congratulate my players.
"What happened was we didn't score; this is football. Portugal are a high-quality side with experienced players. If there's a favourite to win the tournament, this is Portugal now.
"Everything was perfect apart form the fact we didn't score. We weren't successful in attack.
"We expected Portugal to counter and we were playing really well for 120 minutes, controlling the match, not conceding any chances except the last one that was our mistake - and we were punished for that."
Portugal coach Fernando Santos: "It was a very tactical match. Portugal tried to take over but Croatia didn't let us.
"Then again, Croatia tried to take over and we didn't let them win either.
"We were up against an amazing team and this was always going to be tight and strong. We were ready for them and we set up to resist their strengths and take advantage of their weak spots.
"At times we could have passed the ball faster but Croatia influenced that. Sometimes you have to be pragmatic. It'd be nice to play pretty, but that's not always how you win tournaments."
The stats you need to know
- This game saw the longest wait for a shot in a game at Euro 2016 (24 minutes 40 seconds), beating the previous longest time of 12:13 in Belgium's game with Ireland.
- It was the first time Ronaldo had started a European Championship game and not registered a single shot within 90 minutes.
- Quaresma is the third Portugal player in Euros history to score two goals as a substitute, along with Rui Costa and Helder Postiga.
- Quaresma scored the first goal in extra time at the Euros since Andrey Arshavin in 2008 (v Netherlands).
- Croatia had 17 shots but none were on target. This is the most a team has had in a Euros game since 1980 without hitting one on target.
- 5CorlukaSubstituted forKramaricat 120+1'minutes
- 7RakiticSubstituted forPjacaat 110'minutes
- 17MandzukicSubstituted forN Kalinicat 88'minutes
- 12L Kalinic
- 16N Kalinic
- 1Rui Patrício
- 21Cédric Soares
- 4José Fonte
- 5Jose Guerreiro
- 10João MárioSubstituted forRicardo Quaresmaat 87'minutes
- 23Adrien SilvaSubstituted forDaniloat 108'minutes
- 14William CarvalhoBooked at 78mins
- 15André GomesSubstituted forRenato Sanchesat 50'minutes
- 17Almeida da Cunha
- 7Cristiano Ronaldo
- 2Bruno Alves
- 8João Moutinho
- 9Macedo Lopes
- 11Vieira de Freitas
- 16Renato Sanches
- 18Ferreira Silva
- 20Ricardo Quaresma
- 22Dos Reis Carvalho
- Carlos Velasco Carballo
- Shots on Target
Second Half Extra Time ends, Croatia 0, Portugal 1.
Attempt missed. Domagoj Vida (Croatia) left footed shot from the centre of the box is close, but misses to the right.
Attempt blocked. Ivan Perisic (Croatia) header from the left side of the six yard box is blocked. Assisted by Darijo Srna with a cross.
Andrej Kramaric (Croatia) wins a free kick on the left wing.
Foul by Ricardo Quaresma (Portugal).
Substitution, Croatia. Andrej Kramaric replaces Vedran Corluka.
Corner, Croatia. Conceded by José Fonte.
Goal! Croatia 0, Portugal 1. Ricardo Quaresma (Portugal) header from very close range to the bottom left corner following a fast break.
Attempt saved. Cristiano Ronaldo (Portugal) right footed shot from the right side of the six yard box is saved in the centre of the goal. Assisted by Nani.
Attempt missed. Nani (Portugal) right footed shot from the left side of the box misses to the right. Assisted by Renato Sanches following a fast break.
Attempt saved. Ivan Perisic (Croatia) header from the centre of the box is saved in the bottom left corner. Assisted by Darijo Srna with a cross.
Attempt blocked. Ivan Perisic (Croatia) right footed shot from the centre of the box is blocked. Assisted by Nikola Kalinic.
Darijo Srna (Croatia) wins a free kick in the defensive half.
Foul by Nani (Portugal).
Attempt missed. Domagoj Vida (Croatia) header from the centre of the box is just a bit too high. Assisted by Marcelo Brozovic with a cross following a corner.
Corner, Croatia. Conceded by Cédric Soares.
Substitution, Croatia. Marko Pjaca replaces Ivan Rakitic.
Substitution, Portugal. Danilo Pereira replaces Adrien Silva.
Second Half Extra Time begins Croatia 0, Portugal 0.
First Half Extra Time ends, Croatia 0, Portugal 0.
Darijo Srna (Croatia) wins a free kick on the right wing.
Foul by Cristiano Ronaldo (Portugal).
Delay over. They are ready to continue.
Delay in match Vedran Corluka (Croatia) because of an injury.
Corner, Portugal. Conceded by Milan Badelj.
Foul by Nikola Kalinic (Croatia).
Raphael Guerreiro (Portugal) wins a free kick in the attacking half.
Foul by Ivan Strinic (Croatia).
Ricardo Quaresma (Portugal) wins a free kick on the right wing.
Attempt missed. Marcelo Brozovic (Croatia) right footed shot from outside the box misses to the right. Assisted by Luka Modric.
Nikola Kalinic (Croatia) wins a free kick in the defensive half.
Dangerous play by Pepe (Portugal).
Foul by Ivan Rakitic (Croatia).
Renato Sanches (Portugal) wins a free kick in the defensive half.
Vedran Corluka (Croatia) wins a free kick in the defensive half.
Foul by Renato Sanches (Portugal).
Attempt missed. Nikola Kalinic (Croatia) right footed shot from the right side of the box misses to the right.
Attempt missed. Ivan Perisic (Croatia) header from outside the box is just a bit too high. Assisted by Vedran Corluka.
Ivan Strinic (Croatia) wins a free kick on the left wing.