In what was a largely uninspiring game between two good sides, France had the better opportunities in the second half. Neither Hugo Lloris nor Rui Patricio were majorly tested, though, on a night when clearcut chances for either side were few and far between.
Cristiano Ronaldo pulled the trigger on a great chance before half-time but Lucas Hernandez denied him with a fabulous block.
Ronaldo also had the chance to win the game for Portugal in second-half stoppage time, but his near-post effort was comfortably parried away by Lloris.
Here's how each player fared for both sides.
France Player Ratings
Hugo Lloris - 6/10
The France goalkeeper made a straightforward last-minute save to deny Ronaldo a winner, but otherwise, he was not worked overly hard.
Benjamin Pavard - 6/10
With Joao Felix drifting in-field from his starting spot on the left-wing, Pavard had to be spot on with his communication with Varane, and he was. He also went forward on occasion, but couldn't provide much quality.
Raphael Varane - 6/10
Against the likes of Ronaldo and Felix, Varane's ability to read the game and shut out the killer passes from Bruno Fernandes was really important.
Presnel Kimpembe - 7/10
Kimpembe was outstanding in this game. He was the one who mostly had control over shutting Ronaldo out, and he did it with aplomb.
Lucas Hernandez - 7/10
Hernandez ensured that Ronaldo didn't give Portugal the lead with a critical, sensational block in the first half. His robust defending also meant that Bernardo Silva and Nelson Semedo had a tough night for Portugal.
N'Golo Kante - 5/10
In his usual role as the destroyer in midfield for France, Kante did not particularly stand out in this game. Some of his passes went astray, and he didn't really get tested too much by the Portuguese midfield either.
Paul Pogba - 7/10
Pogba was the standout midfielder on the pitch throughout the game. His passing range was terrific, he linked up well with the forward players, and most importantly, he drove forward brilliantly with the ball, on multiple occasions.
Adrien Rabiot - 6/10
Rabiot started on the left of what looked like a midfield diamond for France, as Didier Deschamps continued to try out different systems ahead of next summer's European Championships. The Juventus man put in a decent enough shift, but couldn't unlock the Portuguese defence.
Kylian Mbappe - 7/10
Mbappe was always a source of potential trouble for the Portuguese defenders, with his running in behind. However, he had only one chance in the game, when he breezed past Semedo and tried to chip Patricio. Unfortunately for the Frenchman, the Portuguese 'keeper stood tall to parry that shot.
Antoine Griezmann - 6/10
Griezmann had precious little service into him in the first half, but still had a half-chance, as Patricio saved a near-post shot. In the second half, he dropped a lot deeper, and played more as a creator.
Olivier Giroud - 4/10
Giroud didn't really hold the ball up well in this game. That meant that he couldn't link up with the likes of Mbappe and Griezmann as well as he'd have liked to.
Anthony Martial - 6/10
Martial had one half-chance, when he ran at the Portuguese defence from the left wing and took a shot, but it was blocked by an alert Ruben Dias.
Kingsley Coman - N/A
Coman came on late in the game to replace Mbappe.