Manchester City completed a hat-trick of Carabao Cup wins after a nervy 2-1 win over battling Aston Villa.

Sergio Aguero and Rodri struck in the first half at Wembley to earn Pep Guardiola his 29th trophy as a manager.

Mbwana Samatta pulled a goal back for Villa but, despite Bjorn Engels hitting a post with two minutes left, a spirited performance could not stop City.

The holders have now lifted the trophy in five of the last seven seasons, with Liverpool the only other team to win it three years in a row, between 1981 and 1984.

City dominated possession, as Villa sat deep, trying to probe for an opening but initially found their opponent's massed ranks difficult to break down.

The pattern of the half was set, City pressing and Villa frustrating but Aguero's breakthrough inevitably came after 20 minutes.

Rodri's fine pass found Phil Foden escaping around the back and his header fell for Aguero to sweep in, via a touch from Tyrone Mings, from six yards.

They did not have to wait long for a simplistic second on the half hour after Grealish blocked Ilkay Gundogan's cross with Lee Mason awarding a corner.

Villa disputed it, with replays confirming it should have been a goal kick, but then failed to deal with Gundogan's delivery and Rodri got above Frederic Guilbert to crash in a header.

The game looked gone and Mings blocked Raheem Sterling's drive to prevent a third before John Stones' slip gifted Villa a way back four minutes before the break, as Anwar El Ghazi to cross for Samatta to head in.

Villa refused to go quietly and the Premier League strugglers kept the Premier League champions, who were too casual at times, on their toes.

They almost forced extra time with two minutes remaining when Conor Hourihane swung in a corner and Engels' header was brilliantly turned onto the post by Claudio Bravo.