Joao Mario's World Cup is over after Edinson Cavani sent Uruguay into a World Cup quarter-final against France with two goals of the highest order eliminating Portugal.

Cavani's brace in Uruguay's 2-1 win in Sochi took his tournament tally to three goals and condemned Portugal talisman Cristiano Ronaldo to a World Cup exit, just hours after his great rival Lionel Messi took the same path.

The Paris St Germain forward struck in each half, heading home early on before restoring Uruguay's lead seven minutes after Portugal defender Pepe had levelled.

Pepe's header was the first goal that Uruguay had conceded at this World Cup, but Oscar Tabarez's side recovered to secure a date with France in Nizhny Novgorod on Friday.

Portugal, for whom West Ham United loanee Mario played 85 minutes, started brightly with Bernardo Silva heading over at the far post and Ronaldo firing straight at Fernando Muslera in the Uruguay goal.

But the goal which determined the pattern of the contest arrived as early as the seventh minute.

Cavani received the ball from Rodrigo Betancur and sprayed a wonderful 40-yard diagonal pass to Luis Suarez.

The Barcelona striker cut inside on to his right foot and delivered a superb cross to the far post where Cavani, having made up the ground, gave Rui Patricio no chance.

It was a hammer blow for Portugal given that Uruguay had not conceded in their previous six games, and the South Americans' ability to get bodies behind the ball began to frustrate the European champions.

There was promise for Portugal when Silva threaded intelligent balls into the penalty area, but the threat was quickly snuffed out with the Atletico Madrid pair of Jose Gimenez and Diego Godin commanding.

Uruguay chased every ball as if it was their last, with Cavani often dropping back to form a five-man midfield.

Suarez went close to a second when Patricio pushed out his 22nd-minute free-kick and Cavani shot wide in the final moments of the first half after controlling Godin's towering punt.

Portugal stepped up the tempo after the restart and were rewarded when Uruguay were caught napping by a short corner.

Uruguay's blue wall was beaten when Raphael Guerreiro swung over a cross, and although it cleared the head of Ronaldo, Pepe was right behind him to plant his free header firmly past Muslera.

But Uruguay were back in front seven minutes later when Rodrigo Betancur allowed Cavani to brilliantly curl home his 45th international goal.

Portugal pressed for an equaliser and Silva volleyed over after Muslera had spilled Raphael's cross.

But Uruguay held on to reach the last eight, even if match-winner Cavani gave them a scare ahead of the France game by limping off in the final quarter.