Raheem Sterling put City ahead, only for Kylian Mbappe to level and Radamel Falcao to score twice - the second goal a magnificent chip - as Leonardo Jardim's side moved into a 3-2 lead.
But City struck three times in the last 19 minutes, through Aguero's second goal, John Stones and Leroy Sane, to put Pep Guardiola's men in charge ahead of the return leg on March 15.
For a long time it looked likely to be a scarring night for City, who reached the semi-finals last season, as a succession of calamitous defensive errors allowed Monaco to take control.
But Aguero's doggedness allowed them to haul themselves back into the game, abetted by Falcao's failure to convert a penalty early in the second period.
Having recently lost his place in the team to Gabriel Jesus, only to regain it after the Brazilian broke his foot, it was a personal triumph for Aguero, who departed to a standing ovation.
Mbappe took Valere Germain's place alongside Falcao in Monaco's starting XI and the 18-year-old in the flourescent orange boots immediately caught the eye.
He looked to run at City's defence at every opportunity, at one point leaving Nicolas Otamendi for dead twice in five seconds before setting up Benjamin Mendy, who was thwarted by Willy Caballero.
Kamil Glik's evening got off to a bad start when he was booked for taking out Sane, ruling him out of the return leg, but he came close to putting Monaco ahead with a header from a corner.
It was City, though, who went in front in the 26th minute.
Sane lit the fuse, dancing away from three players on the City left and exchanging passes with David Silva before crossing for Sterling to slide home from close range.
[caption id="attachment_48291" align="aligncenter" width="640"]
Raheem Sterling opens the scoring for the Citizens REUTERS
But within six minutes Monaco were level as Guardiola's goalkeeping problems came back to bite him.
He had restored Caballero to his line-up, having fielded Claudio Bravo in the FA Cup at Huddersfield Town on Saturday, but the Argentine's wayward kicking gave City jitters all evening.
It was his loose, lofted clearance that gifted possession to Fabinho prior to Monaco's leveller, the Brazilian playing a one-two with Bernardo Silva and crossing for Falcao to net with a flying header.
Moments later came a contentious moment as Aguero nudged the ball past Danijel Subasic and went to ground, only to be booked for diving.
On the touchline, Guardiola reacted furiously, angrily gesticulating at fourth official Teodoro Sobrino, but there was worse to come.
City had all the time in the world to organise themselves when Monaco won a free-kick on halfway, but Fabinho was still allowed to find Mbappe, who steadied himself before finishing coolly.
It might easily have been 3-1 by the interval, with Mbappe and Falcao both going close either side of the former's goal.
Monaco looked poised to extend their lead five minutes into the second half when Otamendi was penalised for fouling Falcao, but the Colombian's weak spot-kick was comfortably saved by Caballero.
City levelled eight minutes later courtesy of a howler from Subasic, who allowed Aguero's shot to go right through him at his near post after a storming run down the right from Sterling.
But the momentum swang back Monaco's way just three minutes later when Falcao shrugged off Stones and then lofted an exquisite right-foot chip over Caballero from just 15 yards.
[caption id="attachment_48290" align="aligncenter" width="640"]
Radamel Falcao nets one of his two goals REUTERS
After Sterling had seen a penalty appeal turned away following a robust challenge by Benjamin Mendy, Aguero levelled again, volleying in smartly from Silva's right-wing corner.
The momentum was City's and after Stones had put them ahead in the 77th minute, jabbing in at a corner, Silva's dinked pass enabled Aguero to set up Sane to set the seal on an extraordinary match.
Meanwhile in Leverkusen, Antoine Griezmann was among the scorers for Atletico Madrid as they weathered a late storm against Bayer Leverkusen to claim a 4-2 victory.
Saul Niguez and Antoine Griezmann scored to put the Spanish side two goals up at the interval, but Leverkusen pulled one back through Karim Bellarabi at the start of the second half.
A Kevin Gameiro penalty then restored Atletico's two-goal advantage just before the hour mark, and while a Stefan Savic own goal gave Leverkusen hope again, Fernando Torres came off the bench to make it 4-2 late on.
(Bellarabi 48, Savic 68-og) Atletico 4
(Niguez 47, Griezmann 25, Gameiro 59-P, Torres 86)
Man City 5
(Sterling 26, Aguero 58, 71, Stones 77, Sane 82) Monaco 3
(Falcao 32, 61, Mbappe 40)
Porto v Juventus
Sevilla v Leicester