City had been frustrated for large parts of the game as a combination of poor finishing and an organised Villa back-line kept them at bay.
But the deadlock at Villa Park was eventually broken in the 82nd minute when Toure scored from the edge of the box and six minutes later Aguero made the points certain with a powerful strike.
Villa manager Paul Lambert initially made one change from the side that had lost 3-0 at Chelsea, as Charles N’Zogbia came in for Andreas Weimann.
However, Gabriel Agbonlahor injured himself in the warm-up, so Weimann was restored to the starting line-up in his place.
Villa also included Belgium striker Christian Benteke in their squad for the first since he ruptured his Achilles tendon at the start of April.
City manager Manuel Pellegrini made three changes from his side’s mid-week 1-1 draw with Roma in the Champions League, with James Milner, Aleksandar Kolarov and Eliaquim Mangala coming in.
City dominated the early possession and struck the post in the 10th minute after Kolarov’s angled shot took a deflection off Alan Hutton.
The hosts were organised, though, packing bodies behind the ball and frustrating City, with Fabian Delph and Ashley Westwood industrious in front of Villa’s back four.
Nathan Baker was almost punished in the 20th minute when he miscontrolled the ball on the edge of the penalty area, but he recovered to dispossess Aguero just as he was about to shoot.
Moments later David Silva slipped in Ageuro, but Villa goalkeeper Brad Guzan rushed off his line and gathered at the feet of the Argentina striker.
– Fernandinho injured –
Aguero provided the focal point for City’s attacking play and on the half-hour he stole in front of Baker to get on the end of Kolarov’s pinpoint cross from the left, only to watch his header flash narrowly wide.
Villa were not without their moments. Weimann intercepted a sloppy pass from Pablo Zabaleta just outside the 18-yard box, but was crowded out by City centre-backs Vincent Kompany and Mangala and scuffed his shot.
City stepped it up a gear just before half-time as James Milner rippled the side-netting with an angled shot, while Aly Cissokho cleared Edin Dzeko’s goal-bound header off the line from a corner.
Both sides had clear goal-scoring chances immediately after the interval as first Milner freed Aguero, whose low effort beat the dive of Guzan but rebounded back off the post.
Villa immediately hit City on the counter-attack, with Kieran Richardson outpacing Zabaleta, but visiting goalkeeper Joe Hart narrowed the angle to block his shot.
City were dealt a blow when midfielder Fernandinho limped out through injury to be replaced by Frank Lampard, while Villa Park stood to its feet to welcome Benteke onto the pitch as he came on for Weimann on the hour.
Silva opened the Villa defence up shortly after with a jinking run, but he could only produce a tame finish that Guzan comfortably saved.
City continued to be the dominant side and Guzan did well to save shots from Silva, Aguero and a powerful header from Mangala.
However, the breakthrough eventually arrived from Toure with eight minutes left when Villa defenders Alan Hutton and Philippe Senderos were punished for backing off.
Toure received the ball from substitute Fernando and with space in front of him to shoot, he stroked the ball into the net past the despairing dive of Guzan.
City ensured there would be no late drama shortly after when Aguero received the ball from Milner on the edge of the box and powerfully fired a shot past Guzan. – Agence France-Presse