Manchester City had no time for the romance of Aston Villa’s Carabao Cup final story. Pep Guardiola and his players deal only in the hard currency of domestic trophies and they extended their grip on it via a performance of near suffocating control.

It was important to add the qualification. Goals from Sergio Agüero and Rodri had put City in charge and, although Mbwana Samatta halved the deficit against the run of play before half-time, it looked as though Villa would be unable to fashion a shot at the equaliser, let alone score it. Guardiola’s team dictated the tempo for so long that it was hard to foresee the drama at the end.

But as City failed to score again, the drama did come. The noise from the Villa support that greeted the winning of an 88th-minute corner reflected their belief in an implausible comeback and it almost happened when Bjorn Engels met the substitute Conor Hourihane’s delivery with a thumping header. The City goalkeeper, Claudio Bravo, reacted to turn the ball against a post and his team could clear.

There were further nerves from a City point of view in stoppage-time – including another Villa corner for which the goalkeeper, Ørjan Nyland, came forward – but they closed out the win and, despite Villa’s spirited showing, nobody could say they did not deserve it.

Guardiola has now won eight of the past nine trophies on offer in England, including Community Shields, and this one was a testament to his insatiable hunger for success and that of his players. Do they get enough credit? Their fans say no but one thing is clear: they will want to add the FA Cup and Champions League before the end of the season. The hope is this triumph can be the springboard to another treble, taking in the latter competition, which is the one that they really want.

Villa were chasing a first major trophy since Brian Little led them to the League Cup in 1996 and how Dean Smith, the manager, and Jack Grealish, the captain – both Birmingham boys and lifelong supporters of the club – would have loved to pull it off. They gave it their all and, when it was over, those in claret and blue crumpled to the turf, their spirit finally broken. They could leave with their heads held high, courtesy of the late push, in particular, and the applause of their fans in their ears. It might serve as a consolation in the coming days before the fight for Premier League survival resumes.

It was always going to be tough for the team who sit second from bottom of the table, who had been thumped 6-1 by City when they last met in January and it was not for nothing that the bookmakers had Villa somewhere between 12-1 and 14-1 to win. Smith’s starting 4-5-1 system betrayed a wariness of City’s threat, a desire to block their midfield runners and it would have hurt him to see how easily they got in for the opening goal.

Raheem Sterling passed to Rodri and, from there, it was a pinpoint ball dropped over the top of Matt Targett for Phil Foden to use. His dart forward caught out Targett and, when he headed square, Agüero’s shot flicked off Tyrone Mings to beat Nyland.

Guardiola started Foden on the right of his front three and the 19-year-old was the outstanding performer, decorating the occasion with his rich talent. There was one moment in the early running when he was knocked off balance by a Villa challenge only to keep his feet and surge forward. The balance and quick feet were breathtaking and it was not the only time that this could be said.

Anwar El Ghazi had headed high for Villa in the fourth minute but they would be pinned back and, after City had scored the second and started to monopolise possession, finding spaces in dangerous areas, particularly through David Silva, it threatened to become an ordeal for Smith’s team.

Yet Samatta changed the complexion of the occasion, his flying header re-energising the Villa support – which included Prince William – offering not only that indescribable rush of a Wembley goal but hope. John Stones got his feet into a tangle and fell over as he failed to deal with a chipped ball from Targett and El Ghazi crossed for Samatta to find the net.

Rodri scores the second and eventually decisive goal. Photograph: Tom Jenkins/The Guardian

Before that it had been all City. Foden shot wide after a nonchalantly excellent touch; Agüero was denied by an Engels block; and Sterling was similarly thwarted by Mings. City’s second had been straightforward, too, with Frédéric Guilbert failing to challenge Rodri following Ilkay Gündogan’s corner. The set piece ought not to have been awarded with the last touch coming off Gündogan rather than Grealish but Villa had to defend it properly.

There was niggle as tensions rose in the second half. Sterling clashed with Guilbert and Rodri was booked for a tactical foul on Douglas Luiz after a slip by Kevin De Bruyne, used only as a substitute. Marvelous Nakamba was also cautioned after he cleaned out Agüero with an excessively robust tackle. He was lucky to avoid red.

Villa found it hard to generate any momentum but they knew one chance might be all they needed. City missed chances through Foden, Rodri and the substitute, Gabriel Jesus and, in the end, they would be indebted to Bravo.