Arsenal took their all-time Premier League goal tally to 2,000 as Bukayo Saka fired his side to a comfortable 1-0 win over Aston Villa.
The first opportunity of the game fell to Emile Smith Rowe after just a few minutes. Saka found Martin Odegaard and the Norwegian dropped the ball off to Smith Rowe, but the team's top scorer couldn't keep his effort down.
Former Gunner Emi Martinez was called on just a few minutes later to make a sublime instinctive save after the ball was unwittingly ricocheted towards his bottom corner by the returning Ezri Konsa.
It was all Arsenal in the opening stages, with Saka, Odegaard and Smith Rowe absolutely running the show. Their intricate passing was a massive problem for Villa's backline, who were clearly hanging on for their lives at times.
It was always just a matter of time before Arsenal took the lead and, predictably, it came through Saka. The winger was waiting at the edge of the box and ran on to a knockdown to drive a low effort through a mass of bodies and beyond Martinez - Arsenal's 2,000th goal in the Premier League.
Villa threatened to show a bit more after the goal, but they ended the first half without asking any real questions of Bernd Leno. They had just two touches in the Arsenal box in the first 45, which tells you all you need to know.
The hosts were more of a threat after the break. A whipped cross from Ashley Young came perilously close to dropping to Ollie Watkins, but Gabriel made an excellent header to deflect the ball away.
The pressure didn't drop and the next chance fell to John McGinn, whose curled effort from outside the box just couldn't creep back inside the post. The same can be said of Saka, who failed with a near-identical effort straight after.
Arsenal weathered the half-storm and slowed the tempo down. Both sides enjoyed spells of possession but neither made any real threat on the other's goal.
Substitute Danny Ings came close to a late equaliser when he connected with a McGinn cross, but he couldn't keep his looping header down and watched it nestle on top of Leno's net.
Villa continued to push but simply lacked the quality in the final third and Leno never really looked like conceding.
Aston Villa player ratings
1. Goalkeeper & defenders
Emiliano Martinez (GK) - 6/10 - An excellent save to prevent an early own goal but was unsighted for Saka's opener.
Matty Cash (RB) - 5/10 - Fortunate to avoid a yellow in the first half for some hefty challenges. Nothing too fatal at the back but couldn't get involved in attack.
Ezri Konsa (CB) - 5/10 - Looked a little shaky on his return to the team. Not progressive enough with the ball.
Tyrone Mings (CB) - 5/10 - Looked terrified to try to pass forwards, but didn't have the options to anyway. Divided fans with a tough challenge in the first half that didn't really look like the red some were calling for.
Ashley Young (LB) - 5/10 - Absolutely burned by Saka, Odegaard and Smith Rowe early on, but was more of an attacking threat after the break. Looked like his side's biggest threat at times.
Douglas Luiz (DM) - 4/10 - Took up a lot of strange positions and found it tough to link defence and attack.
Jacob Ramsey (CM) - 4/10 - Didn't offer enough at all. Looked to struggle against Arsenal's press.
John McGinn (CM) - 5/10 - Picked up a needless yellow and seemed to lose his composure a little too often.
Emiliano Buendia (RW) - 4/10 - Couldn't get on the ball at all. Arsenal's press cut out all the paths to him.
Ollie Watkins (ST) - 5/10 - Similarly as isolated. One or two nice runs but was feeding on scraps all game.
Philippe Coutinho (LW) - 5/10 - Dropped very deep to try and get the ball and make things happen, but was then leaving his teammates alone up top.
Bertrand Traore (RW, 69' for Ramsey) - 5/10
Leon Bailey (LW, 69' for Buendia) - 6/10
Danny Ings (ST, 81' for Watkins) - 6/10
Arsenal player ratings
5. Goalkeeper & defenders
Bernd Leno (GK) - 6/10 - Largely untested but showed bravery to claim some tricky crosses.
Cedric (RB) - 7/10 - Some excellent attacking work. Involved in Saka's opener. Really stepped up since Tomiyasu's injury.
Ben White (CB) - 7/10 - Made a few important interceptions but this was largely a walk in the park.
Gabriel (CB) - 7/10 - Didn't have much to do either, but did make a brilliant defensive header to prevent a tap-in for Watkins after the interval.
Kieran Tierney (LB) - 6/10 - Link-up play with Smith Rowe wasn't great but he got the job done at both ends of the field.
Thomas Partey (DM) - 7/10 - Dominated the midfield battle. Pushed McGinn and Ramsey around with ease.
Granit Xhaka (DM) - 6/10 - A little reckless on occasion but didn't do much wrong. Pressed with good energy.
Bukayo Saka (RM) - 8/10 - Ran the show. Another dazzling performance from the winger, who was far too speedy for Young.
Martin Odegaard (AM) - 6/10 - Did some top work quietly. Nothing that set the world on fire but continuously kept Arsenal ticking. Selfless.
Emile Smith Rowe (LM) - 7/10 - Roamed around the pitch in search of possession and asked a lot of questions of Villa. Should have scored early on.
Alexandre Lacazette (ST) - 6/10 - Contributed to Arsenal's high press but his limitations in front of goal were obvious.
Nicolas Pepe (RM, 69' for Saka) - 6/10
Eddie Nketiah (ST, 77' for Lacazette) - 6/10
Rob Holding (CB, 86' for Odegaard) - N/A