Manchester City came out on top of an eight-goal thriller which will go down as one of the finest games of the season to set up an intriguing second leg against AS Monaco in the last 16 of the Champions League.
Raheem Sterling poked City into an early lead but goals from Radamel Falcao and Kylian Mbappe saw Monaco lead at half-time.
However, in a game which also saw a missed penalty and a City goal ruled out for offside, the hosts struck three times in the last 20 minutes to cancel out an advantage given to them by Falcao's stunning second-half chip, the best goal of the game.
Fluid opening sees chances at either end
The match started with both sides on the front foot searching for an early goal, with the visitors' high pressing evident from the first minute.
A panicked City back line was almost caught out with 60 seconds on the clock as red and white shirts swarmed around the edge of Caballero's penalty area, but their corner led only to an initially promising City counter attack which was halted by the offside flag.
Kamil Glik saw yellow early on for blocking Leroy Sane's path towards goal down the left win, meaning the Polish centre-half will miss the return leg through suspension.
It was the home side who saw more of the ball in the attacking third in the first 15 minutes of the game, but Monaco's counter-attacking potential was cause for concern throughout.
Mbappe added fuel to the fire of Thierry Henry comparisons with a dynamic streak down the left wing but, after chopping inside between two defenders, he was crowded out before he could get a meaningful shot away.
Soon after, Kevin de Bruyne had the ball in the net with a close-range tap-in, but play had stopped with Sterling offside for a second time in the build-up.
Sterling tap-in cancelled out
Play continued with City the dominant force, and they had their reward for a bright start after 25 minutes. An incisive, flowing move down the left resulted in a low cross from Sane across the line of the six-yard box with Sterling on hand - and just about onside - to poke home with no defensive pressure.
Monaco turned deficit into slight advantage just six minutes later, though, as City's defence was unable to deal with an attacking overload down the right. Djibril Sidibe was left in enough space to deliver a dangerous cross from deep, and Falcao dived at the back post to head in an away goal.
The mood in the stands turned sour soon after as Aguero was put through on goal and rounded the keeper but appeared to be felled by the keeper. Booked for diving to a cacophony of Mancunian jeers, on second viewing it did indeed seem as though the striker was perhaps on his way down before slight contact was made.
Mbappe fires Monaco into half-time lead
City's promising start was all but forgotten within another five minutes as Mbappe put his stock through the roof with a stunning finish. Put clear on the goalkeeper down the right channel, he powerfully sidefooted into the near top corner to leave Caballero grasping at air and Monaco dreaming of the quarter-final.
Within five minutes of the restart, the visiting fans were in raptures as Falcao was handed a golden opportunity to double Monaco's lead. Looking to get onto a low cross, he tangled with Nicolas Otamendi in the area but there was confusion as the referee hesitated to make a decision.
After a good 10 or 15 seconds and to the disbelief of the home support, he pointed to the spot. The Colombian got up to take the kick but, also hesitant, saw his weak effort saved by Caballero down to the keeper's left.
City used their sense of injustice to spur them on in the early stages of the second half and chances had already gone begging by the time Aguero hauled them level.
Subasic mistake, Falcao magic
Sterling released him down the right with a nicely weighted pass but the chance looked to have been wasted as Aguero shot tamely at Danijel Subasic. His effort took a bobble, however, and crept in over the red-faced keeper's left foot.
No sooner had City twisted the match back level, though, than Monaco turned it around once more. In space on the left but with plenty to do, Falcao tricked his way around John Stones before lifting the ball audaciously over Caballero to restore the visitors' lead.
Sterling had a penalty shout waved away soon after but City were not left feeling aggrieved for long as a more confident finish from Aguero made it three-all.
Three-goal salvo gives City win
David Silva put in a corner from the right and, though Stones could not quite meet it with a header, Aguero was lurking behind him criminally unmarked and able to volley back across goal into the bottom corner.
City's fourth came only a couple of minutes later with another corner, from the left this time. Silva put the ball in again but this time Stones got the telling touch, tapping in at the back post to put the home side back into the lead at last.
Any pretence of a controlled tactical battle was lost soon after as City added a fifth. Aguero was set clear inside the area once again but he was unselfish, squaring the ball past the outstretched keeper for Sane to finish at the back post.