Manchester City may be blowing all and sundry away in top-flight but the Premier League leaders seem to find second-tier opponents somewhat more problematic. Bristol City were all but a few minutes away from becoming the second Championship side to come to the Etihad, derail the juggernaut and hold Pep Guardiola’s team in this season’s EFL Cup.

At half-time, Lee Johnson’s visitors were even hopeful of inflicting Manchester City’s first home defeat in over a year, as a first-half performance of organised defending and assertive counter-attacking ended with Bobby Reid winning and converting a penalty.

Yet Guardiola’s side is developing a knack for winning late and after a night of wasteful finishing, their most trusted frontman saved face late on. After striking back through Kevin De Bruyne early on in the first half, substitute Sergio Aguero sent Bristol’s travelling supporters home unhappy, rising to head in a stoppage-time winner.

Stones clumsily gave away the penalty on Reid (Getty)

Though disappointed, Bristol City, Johnson and those supporters will not leave without hope. Their display, combined with their elimination of Manchester United in the previous round, suggest they still stand an outside chance of reaching a Wembley final when the two teams reconvene at Ashton Gate in a fortnight’s time.

Johnson played in midfield for Bristol City when these two sides in met in this competition over a decade ago and was the sole survivor from that night, save his kitman and former team-mate Scott Murray. Back then, in the summer of 2007, Sven-Goran Eriksson’s City side required a late Rolando Bianchi goal to edge into the third round of this competition. How times have changed.

Whereas a run to semi-finals would have been considered a notable success in those days, the EFL Cup is now some way down the list of priorities, even at this late stage of the tournament. Yet even though Guardiola named what could be called a weakened line-up, the four changes included a four-time African Footballer of the Year, a £43m summer signing and the outstanding player of the Premier League season so far.

Reid squeezed his spotkick past Bravo (Getty)

Bristol City were duly dominated for the opening quarter of an hour but, backed by a strong away following singing in a south-western accent, Johnson’s side surprisingly withstood the early pressure. More surprisingly still, the visitors threatened to find breakthrough.

Manchester City, nevertheless, should have scored the opener and broke Bristol City’s resolve. Bernardo was particularly wasteful in the opening 45 minutes, shanking several efforts wide when converting just one would have quietened the raucous away end. Kevin De Bruyne did better, forcing Fielding into the best save of the first half with a curling shot from the left flank.

Then, as half-time neared, sloppiness at the front was matched by sloppiness at the back and Bristol took a lead that nobody at the start of the night had seen coming. Josh Brownhill, a boyhood City fan and former United youth player, brilliantly robbed a careless Eliaquim Mangala of possession in midfield then played in Reid. John Stones’ attempt to win the ball back in his own area was mis-timed and left referee Anthony Taylor with no choice. Having won the penalty, Reid converted it, firing underneath Bravo’s right hand.

Bristol City will take a valuable away goal back to Ashton Gate (Getty)

Johnson’s side were on the verge of an improbable half-time lead, though if not for a remarkable clearance by Aden Flint on the cusp of the interval, Manchester City would have levelled before the break. Raheem Sterling, operating as a lone striker with Sergio Aguero benched, looked destined to equalise when he chipped the onrushing Fielding but from underneath his own crossbar, Flint found enough space to head the effort over.

For the second time in the space of four days, after also trailing at half time in Saturday’s 4-1 FA Cup victory over Burnley, Manchester City’s unbeaten record on this ground was in jeopardy. A mis-hit clearance by Bravo in the opening stages of the second half and Ilkay Gundogan’s furious reaction said much about their performance so far.

The goalkeeper atoned a few short minutes later with a pass that initiated the equaliser. Bravo’s arced through ball while under pressure in his own six-yard found De Bruyne in midfield and the Belgian began haring up the pitch. Bristol City’s defence backed off him all the way, right up to their own area, at which point he slotted the ball to Sterling and waited for a return pass. When it came, he had ample time to fire high past Fielding and level.

De Bruyne levelled after a killer counter attack (Getty)

From there on, the sense was that Bristol City’s moment had been and gone. Johnson’s visitors lost their counter-attacking edge from the first half and looked a little shakier at the back to boot, but without a natural, recognised striker to call on, Manchester City’s attack still seemed blunt. Aguero was eventually brought on, moments after Sterling had fired straight at Fielding from point-blank range.

The Argentine’s introduction eventually had the desired effect as stoppage time approached. Bernardo made up for his litany of missed chances in the first half by providing an inch-perfect cross that hung in the air just long enough for Aguero to rise above his marker and head home powerfully. It was a late reprieve that Manchester City’s finishing and Bristol’s otherwise resolute defending had not deserved.

Manchester City (4-3-3): Bravo; Danilo, Stones, Mangala, Zinchenko; De Bruyne, Touré, Gundogan; Bernardo, Sterling, Sane.

Substitutes: Ederson, Walker, Aguero, Delph, Fernandinho, Diaz, Adarabioyo.

Bristol City (4-4-1-1): Fielding; Wright, Baker, Flint, Magnusson; Brownhill, Pack, Smith, Bryan; Paterson; Reid.

Substitutes: Steele, Vyner, Kelly, Eliasson, Walsh, Engvall, Taylor.