The New York City FC netminder was excellent with the ball at his feet and gave the USMNT another dimension in possession. Johnson capped off his strong showing with a ridiculous point-blank save in the second half to deny Uruguay from close range.
Scally struggled mightily in his first international start. He was consistently caught out of position and left acres of space in behind. He lost possession far too frequently, either due to poor decisions or under-hit passes. A night to forget for the 19-year-old.
Zimmerman put in one of his best showings in a national team shirt against Uruguay. His aerial ability has been well-documented, but he showed another level to his forward passing and defended on the break better than he's done before on the international stage. The Nashville SC defender got caught out of possession once in second-half stoppage time, but Edinson Cavani missed the ensuing chance.
Yedlin made plenty of trademark overlapping runs and was a consistent outlet on the right flank, but he lost his marker on the back post and picked the wrong pass too many times.
The Juventus midfielder was eased back into action with a 45-minute run-out. McKennie went for a spectacular overhead kick attempt early in the match, but overall looked a bit timid around the box and struggled to make a major impact.
The RB Leipzig midfielder started the match strong and faded the longer it went on, especially defensively. Despite some good moments in possession, Adams uncharacteristically missed a handful of tackles in the second half.
It was another mixed bag from Musah. The Valencia midfielder made several excellent runs with the ball out of midfield, but too often the final ball let him down.
Pulisic looked consistently dangerous around the box, creating the most chances for either side and linking up well with the frontline. As usual for the Chelsea man, he took a beating and drew fouls throughout the night.
The FC Dallas striker and MLS joint-leading scorer got into good positions all night and linked up well in and around the box. Ferreira couldn't find the finishing touch, hitting one shot right at the goalkeeper and putting a header over an open goal. The cross made his header tricky, but it was the type of chance a starting striker at the international level should finish. At some point, he needs to start finding the back of the net.
Weah is consistently the most dangerous attacker in a US shirt, but wasn't able to find the ball enough. The Lille attacker flashed a couple of attempts across goal and looks sure of his place on the right.
Berhalter's side weathered the early storm and grew into the match. After being caught on the back foot, they controlled possession more and more as the night went on and created several chances with the ball. It wasn't always pretty, but it was a good measuring stick.
The Troyes defender struggled significantly in his 45-minute showing. He was slow to read the game and got caught out of position on more than one occasion, forcing Zimmerman and Johnson to bail him out.
The Leeds-bound man once again played in a central midfield (No. 8) role, and once again brought a spark and an edge to the match that had been previously lacking. Aaronson had the right ideas in possession and showed a grit that will serve him well in the Premier League.
Arriola brought his typical industry and work rate to the match. He stretched the field with intelligent off-ball movement, but he couldn't pick out the right final ball into the box.
Jedi made an impact off the bench on both sides of the ball, illustrating just how important the Fulham defender has become for this USMNT side.
Wright couldn't make a real impact off the bench, touching the ball just four times in his 29 minutes on the pitch.
The Heracles midfielder was brought on in the 85th minute for a cameo appearance.