Mikel Arteta's Arsenal slipped up.
Despite an early onslaught by their hosts, Liverpool hung in throughout the first half and might've laid claim to the best chance of the opening 45 minutes. Another mix-up at the back presented Conor Bradley with an open net, but the right-back could only find the crossbar with his lofted effort.
Arsenal hearts were in mouths again just after the restart, after Leandro Trossard was wrong-sided by Florian Wirtz, but replays confirmed Anthony Taylor was right to wave away any claims for a penalty. It set the tone for things to come, with Arsenal failing to register a shot in the second half until added time.
David Raya - 6
He was almost involved in a defensive howler when rushing out to collect a ball that William Saliba had already decided to pass it back. Otherwise, the Spanish goalkeeper was completely untested.
Jurrien Timber - 7
Didn't really put a foot wrong throughout the 90 minutes, with the Dutchman chipping in at both ends of the pitch.
William Saliba - 6
Gabriel - 6
Piero Hincapie - 6
Taken off with an injury early in the second half, but the defender had been entirely comfortable throughout the 50-odd minutes he was on the pitch for. Arteta and co. will be crossing their fingers that the Ecuador international is back up to full fitness sooner rather than later.
Martin Zubimendi - 5
Greedily took the ball in his stride when a dummy would've left Bukayo Saka with a free shot at goal in the second half, and struggled to contribute to Arsenal's build-up play in midfield.
Martin Odegaard - 5
It's a credit to the effort of the Liverpool midfield that the Arsenal skipper was so quiet throughout the match, with the Norway international failing to make an impact.
Declan Rice - 6
Put himself about in the centre of the park.
Bukayo Saka - 5
Started on fire and looked as if he was in the mood to torment the Liverpool backline all evening. But after an initial bright start, the English international began to fade and was ultimately subbed off with Arsenal chasing a winner.
Viktor Gyokeres - 3
It felt like Arsenal were playing with 10 men for most of the time he was on the pitch. A completely ineffective and useless performance from the man who was brought in to take Arsenal to the next level. As it goes, it looks as if they'll get the job done in spite of the Swede, not because of him.
Leandro Trossard - 6
One of the brighter Arsenal attackers, and if it wasn't for a couple of unfortunate deflections, he might've picked up an assist or two. Might've felt hard done by to have been taken off on the hour mark.
Substitutes:
Myles Lewis-Skelly - 4
Rushed onto the pitch to replace the injured Piero Hincapie, but never really got up to speed with the game. Struggled with the pace of Jeremie Frimpong and was careless in possession at times. The youngster will have to sharpen up
Gabriel Martinelli - 6
Gabriel Jesus - 6
Eberechi Eze - 6
Noni Madueke - 6