Morocco became the first African nation to reach the semi-finals of the World Cup as Youssef En-Nesyri's first-half winner added Portugal to the list of shocked teams in Qatar.
Striker En-Nesyri profited on a mistake from Portugal goalkeeper Diogo Costa to head home the historic strike for not only Walid Regragui's side — but the entire African continent.
Not even the 51st minute introduction of Cristiano Ronaldo — once again left on the bench by his manager Fernando Santos — could inspire a Portugal comeback, as Bruno Fernandes hit the crossbar while Goncalo Ramos and Bernardo Silva missed the target from good positions.
Late on, Morocco required heroics from goalkeeper Bono who saved from Joao Felix and Ronaldo while Pepe missed a sitter in the final minute of eight in stoppage time — which also saw substitute striker Walid Cheddira sent off for two quickfire yellow cards.
Morocco's shock run to the last four — which has seen them beat Belgium, Spain and Portugal and concede just one own goal in five World Cup matches — sets up a semi-final clash with the winner of England and France's blockbuster quarter-final.
More from Sky Sports:
England's 2022 World Cup exit: Where it went wrong for Three Lions against France
Bruno Fernandes and Pepe question appointment of Argentine referee after World Cup exit to Morocco
Sergio Aguero tells Netherlands to 'go and play FIFA' as Argentina taunt Dutch after heated World Cup quarter-final
How Morocco pulled off another shock to create history
Fresh from their 6-1 win over Switzerland in the last 16, Portugal began the game brightly with a couple of first-half chances falling to Joao Felix.
The forward put an early header straight at Bono and saw a deflected shot land on the top of the Morocco goalkeeper's net before flashing over a first-time finish from the edge of the area when found in acres of space.
Moments of the match...
- 5 mins: Joao Felix missed the first of three big first-half chances by heading straight at Bono from a free-kick.
- 42 mins: Youssef En-Nesyri beats Diogo Costa to the ball to head home what ends up being the winner.
- 45 mins: Bruno Fernandes hits the bar and moments later sees a penalty appeal waved away.
- 51 mins: Moments after Hakim Ziyech nearly made it 2-0, Cristiano Ronaldo enters the field of play.
- 58: Goncalo Ramos heads a free header wide of goal following Otavio's cross.
- 83 mins: Bono tips over Joao Felix's goalbound strike away from the top corner of the net.
- 90+1 mins: Ronaldo breaks clear of the Morocco defense but his low shot is saved by Bono.
- 90+4: Walid Cheddira sent off for Morocco after two quickfire yellow cards.
- 90+7: Pepe heads wide from close range in the final big chance of the game for Portugal
- Full Time: Ronaldo storms off the pitch in tears
Meanwhile, Fernando Santos' side were warned about En-Nesyri's threat in the air as he fired over a free header from a corner, while Selim Amallah and Sofiane Boufal went close in quick succession but both failed to find the target.
Eventually, Morocco's resilience paid off three minutes before half-time as Portugal goalkeeper Costa came for Attiyat Allah's long hanging ball from the left and collided with his own defender in Dias, leaving En-Nesyri to nod home.
A frantic end to the first half saw Fernandes crash a dipping volley against the crossbar before seeing a penalty challenge waved away by referee Facundo Tello when put through on goal moments later.
Morocco started the second period strongly, with Hakim Ziyech testing the gloves of Costa from a free-kick — a major chance which prompted the introduction of Ronaldo on 51 minutes
But it was Goncalo Ramos who was on the receiving end of a major chance immediately after Ronaldo's entrance, heading Otavio's defense-opening cross wide from inside the box.
Bernardo Silva had two great opportunities in quick succession to level but curled over from the edge of the area before failing to connect in the box after a smart free-kick move.
Yet none of those chances compared to the three that fell Portugal's way in the final 10 minutes. First, Felix's rasping drive towards the top corner was tipped over by Bono — who had to be equal to Ronaldo's low effort when the 37-year-old ran through one-on-one.
Morocco were close to finding a second when Zakaria Aboukhlal burst clear through but his clumsy chip was easily saved by Costa — yet Pepe had an even better chance at the other end as he headed wide from inside the six-yard box following Rafael Leao's cross.
The full-time whistle sparked jubilant scenes from the Morocco players and their thousands of supporters in the stands — while Ronaldo immediately marched off the pitch in tears in what is likely to be his last World Cup appearance.
Pepe rages at Argentine referee
Portugal defender Pepe criticized the appointment of Argentine referee Tello in the wake of the Argentina players' comments about officiating and added time following their quarter-final win over the Netherlands on Friday.
Argentina conceded an equalizer at the end of 11 minutes of stoppage time to send their tie into extra-time, with goalkeeper Emiliano Martinez claiming referee Antonio Mateu Lahoz wanted the Netherlands to score, while captain Lionel Messi was also critical.
Pepe says the appointment of Tello in this game should not have been approved, with Argentina still in the tournament.
"We conceded a goal that we weren't expecting but... I'm going to have to say it. It's unacceptable for an Argentine referee to referee our game," said Pepe. "After what happened yesterday, with Messi talking, all of Argentina talking and the referee comes here.
"What did we play the second half? The goalkeeper kept dropping to the ground. There were only eight minutes of stoppage time. We worked hard and the referee [gave] eight minutes?
"We didn't play anything in the second half. The only team that played football was us. We are sad. We had the quality to win the World Cup and we didn't manage to."
"Our players are distressed," said Portugal coach Fernando Santos, who shrugged off questions about his own future and added that he didn't regret not starting Ronaldo.
"Cristiano is a great player and he came on when we thought it was necessary. But no, no regrets."
Meanwhile, Morocco goalkeeper Bono said: "Pinch me, I'm dreaming.
"Morocco is ready to face anyone in the world. We have changed the mentality of the generation coming after us. They'll know Moroccan players can create miracles."
Player of the match — Sofyan Amrabat (Morocco)
Such was Portugal's domination in possession, Morocco metronome Sofyan Amrabat only touched the ball 32 times in the 90 minutes.
But what the midfielder did on the rare occasions in which he did get on the ball was phenomenal and he was instrumental in relieving pressure on the Morocco backline.
Amrabat made eight ball recoveries and three tackles but also showed his ability to bring the ball forward — entering the final third twice and creating one clear-cut chance.
Put simply, Amrabat was everywhere for Morocco and is staking a real claim to be named Player of the Tournament.
'Don't take Morocco lightly'
Sky Sports' Graeme Souness speaking on ITV:
"Morocco were fabulous — it was a mirror of the Spanish game [which they won on penalties].
"They were sensational when it came to defending their box. In terms of the hard work, being organized and determination they were a credit to their country.
"Do not take them lightly. They will not be a different Morocco next time, they will play the exact same way.
"They had a game plan which worked well. Every time the Portuguese got the ball, they got back in numbers. It's ok to say that, but when you're constantly bringing the other team onto to you, one person normally falls asleep in danger. No-one did that.
"For Argentina, France and England, if you asked them and they gave you an answer, they would be happy for Morocco getting there. That might be a mistake."
What does the result mean?
Morocco move into the World Cup semi-final on Wednesday, Dec. 14, kick-off at 7 p.m. GMT. Should they win that, the World Cup final takes place at 3 p.m. GMT on Sunday, Dec. 18.
The African side will play the winner of England and France's quarter-final, which kicks off at 7 p.m. GMT on Saturday night.