City appeared in disarray as they fell 3-0 behind on aggregate following goals from Mathias Fernandez and Ricky van Wolfswinkel in the first half of the second leg of the last-16 tie.
Yet City were as good in the second period as they were bad in the first, hitting back through two Sergio Aguero goals and a Mario Balotelli penalty to fall agonisingly short of the quarter-finals.
The pulsating finish, which saw goalkeeper Joe Hart’s last-gasp header tipped agonisingly wide, seemed highly unlikely at the break.
City were defensively poor, error prone and Balotelli was having one of his more volatile nights.
The striker even seemed to argue with manager Roberto Mancini after conceding the free-kick which led to Sporting’s opener.
But after their rousing fightback City could take huge consolation from a performance which bodes well for the rest of their Barclays Premier League title challenge.
City had initially seemed in the mood as the game kicked off in a lively atmosphere, enhanced by a small band of excitable Sporting fans who let off some green flares.
After an early score when Stijn Schaars shot wide after a poor Stefan Savic clearance, City looked to attack.
Adam Johnson made two threatening runs and almost broke through as he looked to play a one-two with David Silva, but the Spaniard’s return pass was well read by Anderson Polga.
Sporting had no intention of sitting back on their first-leg advantage and the impressive Fernandez found space to shoot, but his effort was blocked by Savic and first-leg goalscorer Xandao headed wide from the resulting corner.
Johnson volleyed wide from a Silva cross as City came forward again, but the hosts then began to show signs of early frustration and Sporting dug in.
First Yaya Toure was booked for throwing the ball into the ground after fouling Fernandez. Balotelli then took a Silva cross-field pass in his stride but Polga got across to deflect his shot wide.
As the ball bounced back off the advertising hoarding, Balotelli thumped it high into the stand.
Fernandez continued to pose a danger but was booked for diving after turning sharply in the area and tumbling following minimal contact from David Pizarro.
However, Fernandez got the break he wanted soon after with a stunning free-kick in the 33rd minute after a backtracking Balotelli clumsily bundled over former Liverpool defender Emiliano Insua.
Mancini appeared frustrated by Balotelli’s actions – and exchanged words with his fellow Italian – but Fernandez took full advantage as he curled a fine shot around the wall which Hart could only palm in.
City were left needing four goals to progress after Sporting then grabbed their second of the night six minutes before the interval.
Aleksandar Kolarov headed clear a free-kick but was then caught out of position as Marat Izmailov stole in and crossed low for Van Wolfswinkel to tap in.
Mancini attempted to bring some solidity back to his side by sending on Nigel de Jong for Johnson at the start of the second half. Edin Dzeko also came off the bench to bolster the forward line, replacing midfielder David Pizarro.
The changes seemed to work as City became more measured in possession.
They eventually pulled one back on the hour as Yaya Toure, fed by Micah Richards, picked out Aguero in the box, who took a touch and turned to fire past Rui Patricio.
Balotelli then won a free-kick outside the area but Kolarov clipped his shot narrowly wide.
City suddenly began to sense an unlikely comeback as Aguero won a penalty after being felled by Renato Neto.
There was some debate as to whether the offence took place in the area, but Balotelli showed no sign of nerves with a cool penalty that left wrong-footed Patricio standing.
The game was truly on as Aguero remarkably put City ahead on the night – and level on aggregate – eight minutes from time.
The Argentinian was left unmarked at the back post as a Kolarov corner made its way to him via the head of Savic and he blasted in.
City began to pour forward in search of a winner and Dzeko headed over from a Kolarov cross before Balotelli went even closer with another header that drifted across goal.
Hart almost completed a sensational comeback as he went forward for a corner deep into injury time, but his header was tipped round the post by Patricio and there was no time to take the resulting corner.