You are not permitted to download, save or email this image. Visit image gallery to purchase the image.
City, who have now won the competition in five of the last seven seasons, dominated much of the match and should have been home and dry when they opened a 2-0 lead after half an hour thanks to Aguero's strike in the 20th minute and a Rodri header.
Yet a bizarre slip from City defender John Stones allowed Villa's Anwar El Ghazi to cross for Mbwana Samatta to head home just before halftime, fuelling their hopes of a comeback. The second half failed to live up to the first, however, with few clear chances until City keeper Claudio Bravo pulled off an excellent save to push Bjorn Engels' header against the post and out in the 87th minute.
City became the first side to win the competition three seasons in a row since Liverpool claimed four straight titles from 1981 to 1984.
Pep Guardiola's side had come into the final buoyed by their midweek Champions League last 16, first-leg victory at Real Madrid and there was a spring in their step as the game quickly settled into a predictable pattern of City dominance.
Aguero looped a header over the bar after 10 minutes but the formidable Argentine goal-getter, who had been dropped for City's trip to Madrid, did not have to wait long to get on the scoresheet after 20 minutes.
A lofted ball to the far post by Spain international Rodri was headed back across goal by Phil Foden for Aguero to volley into the turf past goalkeeper Orjan Nyland and into the net.
It was Aguero's 10th goal in his last six starts against Villa and a setback for the Midlands side who looked unlikely to recover when Rodri doubled the lead 10 minutes later.
The Spaniard powered a downward header into the net from Ilkay Gundogan's corner, which left a bitter taste for Villa who felt the set piece should not have been awarded.
A two-goal lead usually spells the end for City's opponents, but a bizarre slip from Stones gave Dean Smith's Villa side an unlikely route back into the match.
Under no pressure, the England centre back tumbled to the turf under a lofted ball, allowing El Ghazi to dash down the left and cross for Villa's Tanzania striker Samatta to find the net with a diving header.
That should have revved up Villa for a rousing second-half display but in truth they never really got going after the break until it was too late.
The majority of the chances in the second half went City's way with Foden flashing an effort just wide, Rodri having a header palmed away by Nyland and Aguero thrashing a volley into the side netting before Villa found some late momentum.
As the clock ticked round towards 88 minutes Engels rose high to power a header goalwards but City keeper Bravo, starting instead of usual first choice Ederson, palmed his effort onto the post and away.