Arsenal gained a thoroughly deserved victory over Aston Villa to move into the top half of the Premier League table.
Thomas Partey headed in Emile Smith Rowe's corner for his first goal for the Gunners - having earlier hit the crossbar.
Right at the end of the first half, Arsenal were given a penalty after a long video assistant referee review for a Matt Targett foul on Alexandre Lacazette.
Pierre-Emerick Aubameyang's penalty was saved excellently by former Arsenal keeper Emiliano Martinez, but the Gabon striker put home the rebound from close range.
Villa improved on a thoroughly wretched first half, but Smith Rowe scored Arsenal's third 11 minutes into the second half.
He won the ball in his own half and then finished the move via a deflection and the post.
The visitors got a consolation when Jacob Ramsey curled his first Villa goal into the top corner from 20 yards. They put on good pressure and created a few chances in the closing stages but it was too little, too late.
More like it from Arsenal
This did not look like a game between two teams sitting next to each other in the table - but Arsenal were 12th and Villa 13th before kick-off.
Arsenal are capable of good spells - like at the start of Monday's 2-2 draw with Crystal Palace - and good games - like the 3-1 win over Tottenham.
This was one of the good games, well for 80 minutes.
Aston Villa were the opposite of their 3-2 defeat by Wolves. They collapsed there in the final 10 minutes - but this time that was when they they had most of their chances.
They did not manage a shot in the first half, the first time since May 2018 that has happened to a team playing against Arsenal in the league.
The Gunners should have been out of sight - Partey had hit the woodwork from close range before headed them into the lead.
Aubameyang had a goal disallowed for a debatable Lacazette foul and Martinez made several smart saves.
But Arsenal got the second they deserved in first-half injury time. The crowd thought Craig Pawson was whistling for half-time but he was actually stopping play for a VAR consultation.
Targett was about to clear the ball when Lacazette stepped across him and drew a foul instead. The penalty was given and Aubameyang scored at the second attempt.
Villa had more threat when they brought on winger Leon Bailey for defender Axel Tuanzebe at half-time, but after their first couple of chances, Smith Rowe wrapped it up.
Or so it looked until Ramsey scored the best goal of the game. Ollie Watkins, Ramsey and Bailey all had chances to for Villa but could not set up a tense finale.
Player of the match
Smith RoweEmile Smith Rowe
Aston Villa
Squad number41Player nameRamsey
Squad number1Player nameMartínez
Squad number31Player nameBailey
Squad number2Player nameCash
Squad number7Player nameMcGinn
Squad number4Player nameKonsa
Squad number5Player nameMings
Squad number21Player nameEl Ghazi
Squad number6Player nameDouglas Luiz
Squad number16Player nameTuanzebe
Squad number20Player nameIngs
Squad number3Player nameTargett
Squad number11Player nameWatkins
Squad number10Player nameBuendía
Line-ups
Arsenal
Formation 4-4-2
32Ramsdale
18Tomiyasu4White6Gabriel20Varela Tavares
7Saka23Sambi Lokonga5Partey10Smith Rowe
9Lacazette14Aubameyang
32Ramsdale18Tomiyasu4White6Gabriel20Varela Tavares7Saka23Sambi LokongaBooked at 45minsSubstituted forMaitland-Nilesat 73'minutes5Partey10Smith Rowe9LacazetteSubstituted forØdegaardat 68'minutes14AubameyangBooked at 66minsSubstituted forMartinelliat 90+1'minutesSubstitutes
1Leno8Ødegaard15Maitland-Niles16Holding17Cédric Soares19Pépé25Elneny31Kolasinac35MartinelliAston Villa
Formation 3-4-1-2
1Martínez
4Konsa16Tuanzebe5Mings
2Cash7McGinn6Douglas Luiz3Targett
10Buendía
20Ings11Watkins
1Martínez4Konsa16TuanzebeSubstituted forBaileyat 45'minutes5MingsBooked at 27mins2Cash7McGinnBooked at 32mins6Douglas LuizBooked at 84mins3TargettBooked at 60mins10BuendíaSubstituted forRamseyat 68'minutes20IngsSubstituted forEl Ghaziat 77'minutes11WatkinsBooked at 2minsSubstitutes
8Sanson12Steer18Young19Nakamba21El Ghazi30Hause31Bailey35Archer41RamseyReferee:Craig PawsonAttendance:59,496Live Text
Match ends, Arsenal 3, Aston Villa 1.
Second Half ends, Arsenal 3, Aston Villa 1.
Attempt missed. Leon Bailey (Aston Villa) left footed shot from outside the box is just a bit too high from a direct free kick.
Foul by Nuno Tavares (Arsenal).
Leon Bailey (Aston Villa) wins a free kick in the attacking half.
Foul by Ainsley Maitland-Niles (Arsenal).
John McGinn (Aston Villa) wins a free kick in the defensive half.
Substitution, Arsenal. Gabriel Martinelli replaces Pierre-Emerick Aubameyang because of an injury.
Attempt missed. Jacob Ramsey (Aston Villa) left footed shot from the centre of the box misses to the right. Assisted by Matt Targett.
Foul by Nuno Tavares (Arsenal).
Matthew Cash (Aston Villa) wins a free kick on the right wing.
Douglas Luiz (Aston Villa) is shown the yellow card.
Foul by Ainsley Maitland-Niles (Arsenal).
Douglas Luiz (Aston Villa) wins a free kick in the defensive half.
Attempt missed. Ollie Watkins (Aston Villa) right footed shot from very close range misses to the right. Assisted by Matthew Cash.
Goal! Arsenal 3, Aston Villa 1. Jacob Ramsey (Aston Villa) right footed shot from outside the box to the top right corner. Assisted by Leon Bailey.
Bukayo Saka (Arsenal) wins a free kick in the defensive half.
Foul by Matt Targett (Aston Villa).
Attempt saved. Martin Ødegaard (Arsenal) left footed shot from outside the box is saved in the top right corner.
Bukayo Saka (Arsenal) wins a free kick in the attacking half.
Our coverage of your Premier League club is bigger and better than ever before - here's everything you need to know to make sure you never miss a moment