Ibrahimovic scored the first and set up the second as PSG kept their European hopes alive.
Lionel Messi opened the scoring with his 57th goal of the season, but was forced off with a hamstring injury at half-time.
The talking point ahead of the match was the inclusion of 37-year-old David Beckham in the PSG line-up, ahead of 20-year-old Marco Verratti, and Barca looked dangerously dominant in the opening minutes, but the former England captain went on to play a solid 70 minutes in a deep-lying midfield role.
A frustrated Barcelona were forced to try their luck from range in the first half, with wayward efforts from Andres Iniesta and Alexis Sanchez.
But a moment of brilliance from Dani Alves, who sliced open the defence with a fantastic pass off the outside of his boot, led to Messi opening the scoring with a curling shot just before half-time.
It was the Argentine’s last contribution to the match however, as he hobbled off with a hamstring strain and was replaced by Cesc Fabregas.
The French side controversially found their way back into the match in the 79th minute, when Ibrahimovic hit home from a rebound in an offside position, after Thiago Silva’s header took a ricochet off the post.
Xavi scored a late penalty on the stroke of injury time, after Salvatore Sirigu fouled Alexis Sanchez.
But in the 94th-minute Ibrahimovic headed the ball down to Blaise Matuidi, who managed to squeeze a shot past Victor Valdés in Barcelona’s goal with the last kick of the game.