With David Luiz suspended, PSG coach Laurent Blanc switched to a back three and City sought to press them early, but the visitors soon settled into a rhythm and began to control the game.
Ibrahimovic, hunting his 40th goal of the season, drew a fingertip save from Joe Hart with a dipping, swerving free-kick after a quarter of an hour, before City twice went close through Aguero.
The home side seemed to shake off their early nerves as half-time approached and were given a chance to take the lead when Aguero went sprinting into the box and was felled by a poorly-timed tackle by Trapp.
Referee Carlos Velasco Carballo gave the penalty and booked the PSG keeper, but Aguero side-footed his spot-kick well wide, and PSG were let off the hook a second time in quick succession when Serge Aurier’s misplaced pass fell to Jesus Navas and the Spaniard fired off target.
Ibrahimovic stung Hart’s palms early in the second half with a powerful free-kick from 25 yards and PSG tried to lift the tempo of their game after a sluggish end to the first period.
Substitute Lucas had the ball in the net moments later only to see the effort ruled out for offside, and Thiago Silva’s downward header was well saved by Hart as Blanc’s team began a late push for a winner.
But with 15 minutes to go, City went forward and Gael Clichy’s cross found Fernando, who touched the ball to De Bruyne and the Belgian curled home an unstoppable shot from the edge of the box.
Ibrahimovic put the ball in the net in the dying minutes but the offside flag was raised and PSG were dumped out of the Champions League amid delirious celebrations from the home crowd.