Aston Villa secured their fourth Premier League win in a row after beating title hopefuls Manchester City 1-0 at Villa Park.
Matty Cash scored the only goal of the game in the 19th minute, sweeping the ball past Gianluigi Donnarumma after being picked out by Emi Buendía from a corner.
Shortly after Cash's opener, Emi Martínez made a crucial save to deny Erling Haaland what would have been an equaliser. Buendía was then forced off through injury and replaced by Jadon Sancho on the half-hour mark.
John McGinn had the chance to double Villa's lead soon after Buendía hobbled down the tunnel. Boubacar Kamara laid the ball back to him, but the skipper drilled it wide of the post.
McGinn's next big opportunity came seven minutes into the second half when he connected with a cross from the left, also from a corner, but his effort was blocked on its way to goal.
Later in the game, Cash's header fell to Savinho, who tried to drill it back at goal, only for Onana to block it. Savinho then had another attempt, which Pau Torres blocked; it looked like it might have gone just wide, but the Spaniard had little chance to react.
In the 70th minute, Sancho had the chance to score his first for the club after latching onto Boubacar Kamara's ball over the top, but at a tight angle, Donnarumma twice denied him.
Erling Haaland thought he had scored an 89th minute equaliser when he bundled the ball into the net, but Omar Marmoush - who crossed the ball - had strayed into an offside position.
Emi Martínez Martínez made a key save to deny Haaland shortly after Cash had put Villa ahead, diving to his right to prevent the striker's cushioned finish from finding the far corner. His distribution was a little off at times, with some of his longer passes lacking accuracy. 8
Matty Cash Cash bagged his second goal of the season to hand Villa the lead -- and what a finish it was, leaving Donnarumma with no chance. He continued his outstanding start to the campaign with another impressive performance this afternoon. 9*
Ezri Konsa Konsa returned to the starting lineup after being rested against Go Ahead Eagles. He battled well against Haaland for the most part and embraced the challenge, though he did give the ball away on the hour mark before recovering brilliantly to block Savinho's cross. 8
Pau Torres Torres played the ball over the top of the City defence for Digne, leading to the corner from which Villa opened the scoring. He also made a superb block to prevent Savinho's volley from creeping into the far corner around the hour mark. 8
Lucas Digne Digne missed the midweek defeat to Go Ahead Eagles through injury but returned today. He faced a big test against the pace, trickery, and versatility of City's wide attackers, yet stood up to the challenge well throughout. 8
Boubacar Kamara A key cog in this Villa side, Kamara once again demonstrated why he's such a consistent top performer under Emery. Played a lovely ball over the City backline to find Sancho in the 70th minute, but Donnarumma denied the winger twice from a tight angle. 8
Amadou Onana Onana made his third successive start in all competitions since the October international break. His athleticism proved vital against a City side that forced Villa to work hard out of possession. Won headers in the Villa box and made several key blocks. 8
John McGinn City's players clearly didn't enjoy coming up against McGinn today. Operating off the right, the captain frequently tucked inside to add numbers and physicality in midfield, disrupting City's rhythm effectively. Relieved pressure by winning fouls - he used his body very well. 8
Emi Buendía Buendía was excellent in transition and posed a real threat when picking up the ball between the lines. He provided the pass to Cash for Villa's opener but was unfortunately forced off through injury quite early in the first half. 8
Morgan Rogers Rogers looked back to his lively best in the first half, evading challenges and carrying Villa up the pitch after wriggling away from pressure in tight spaces. Starting on the left, he later moved into a more central role following Sancho's introduction. 7
Ollie Watkins Watkins has now scored just once in his last 13 appearances across all competitions, but he once again played a key role in Villa's attacking play. His movement and ability to draw defenders out of position created space for his teammates throughout the game. 7
SUBS
Jadon Sancho (for Buendia, 27'): Sancho played off the left wing, and looked bright in stages, but also weak in others. He was taken off in the 74th minute as Villa needed more steel in the latter stages of the match. 6
Ross Barkley (for Sancho, 74'): Added energy in the middle of the park and used the ball well. Excellent block in added time to stop Nico González's shot. 7
Evann Guessand (for McGinn, 74'): Guessand got Villa out a couple of times, being the outlet down the left. 6
Every day, the BirminghamLive football desk strive to deliver all manner of news, features and transfer-related stories as a part of our overall package of Aston Villa content.
Our dedicated reporter John Townley - who you can follow on X by clicking here - follows Villa home and away and offers you comprehensive coverage from matchdays, press conferences and everything that happens in between.
So much happens day to day and sometimes you can struggle to keep on top of the very latest updates as and when they occur - that's why we have produced a daily newsletter which you can sign up to, for free, and which means you'll have a round-up of the key stories land in your email inbox. Sign up to the Villa newsletter here.
You can also get all your favourite content from BirminghamLive's Villa team on WhatsApp. Click here to sign up for breaking updates about the biggest stories in and around the club.
If you prefer reading our Villa stories on your phone, consider downloading the BirminghamLive app, in which you can personalise the content you see by selecting Villa as one of your designated topics. You can get it from Apple here and for Android here.