The Blues fell behind to a penalty just before the break and had to thank the inspirational Kevin De Bruyne for levelling the scores after half-time as the Premier League leaders toiled against the well-organised Championship outfit.
Top-scorer Aguero’s last gasp winner means City will take a narrow lead to Ashton Gate with everything still to play for.
What happened?
If Bristol City had wondered how much of the ball they would see in the first leg, the opening few minutes gave them a fair indication with the Blues passing around, through and even over the Robins at will.
De Bruyne’s dipping cross forced an early save from Frank Fielding and the Belgian sent a first-time pass into the path of Raheem Sterling that almost breached the visitors’ back line in a dominant opening from the Blues.
But it was the visitors who came closest to breaking the deadlock as Joe Bryan carried the ball towards the City box before firing a 20-yard shot that Claudio Bravo parried and Korey Smith failed to make the most of the loose ball.
De Bruyne forced another decent save from Fielding on 25 minutes after a sloppy clearance fell to him on the edge of the box, as City looked for the breakthrough but the Robins, playing anything but 10 men behind the bal at that stagel, held firm.
On the half-hour, TV replays proved John Stones had been held back by Bailey Wright as he made his run towards the ball from a corner-kick, but referee Anthony Taylor - who had annoyed the home support by waving away a number of questionable challenges - either didn’t spot it or felt there was no infringement.
Bravo made another good save from Marlon Pack’s long-range effort as the Championship side played their part in an open and entertaining game.
Better finishing might have seen Jamie Patterson punish the Blues but the warning signs were ignored and a minute before half-time, City finally paid the price.
Eliaquim Mangala lost possession to Josh Brownhill who slipped a ball into Bobby Reid and the Robins striker was felled by John Stones and a penalty was awarded.
Reid stepped up to tuck the spot-kick home to send the 7,500 travelling fans wild.
Even in the time that remained City almost drew level as Bernardo played in Sterling who chipped the ball over Fielding only for Aden Flint to make a superb goal-line clearance and send the visitors in at the break a goal to the good.
Not the script most people had imagined before kick-off!
City were quickly out of the blocks after the re-start but continued to squander chances with Leroy Sane and Sterling both guilty of missing the sort of chances they’ve been gobbling up all season.
The Blues were looking a little shaky at the back, misplacing the odd pass, but ten minutes into the second period, finally, City drew level.
The move started when Bravo, under pressure from a Bristol City forward, took his time before picking out De Bruyne midway inside his own half – the Belgian powered forward, slipped the ball to Sterling who returned the pass just inside the box for De Bruyne to power past Fielding.
Minutes later De Bruyne chased a ball played back to Fielding only to be pushed back by Flint on the edge of the box as the Robins began to rock – as the last man, Flint was lucky not to see red.
De Bruyne set up Sterling midway through the half with a low cross from the right but the England winger didn’t connect as sweetly as he intended.
The hoped-for onslaught didn’t materialise as the Robins regrouped, threw bodies behind the ball and occasionally threatened on the break, but with almost the last touch of the game, Bernardo sent in a pinpoint cross for Aguero to glance past the keeper and give the Blues a narrow first leg lead.
The visitors will feel, with some justification, the tie is far from over, but yet again, the Blues found a way to win and kept going until the last kick of the game
Key moment?
The missed foul on John Stones in the first half should have perhaps been a penalty for the Blues, but the pass of the night from Bravo that started the move for the equaliser would take some beating.
Star man: Kevin De Bruyne
No surprises with the skipper-for-the-night outstanding from start to finish.
What does it mean?
It’s all to play for in the second leg at Ashton Gate where City will have a pumped-up home side and partisan home crowd to overcome if a place at Wembley is to be booked.
But a one-goal advantage may yet prove to be decisive…
What’s next?
City travel to Merseyside to face Liverpool in traditionally one of our toughest fixtures.
Liverpool will be out to avenge their record 5-0 loss at the Etihad earlier in the campaign and with Jurgen Klopp’s side in fine form, the Blues have a difficult 90 minutes ahead.