Kylian Mbappe put the hosts ahead, slamming into the bottom corner on the counter-attack.
But Andre Silva and Nordi Mukiele scored from Angelino crosses to put the German side ahead.
Messi had a shot tipped onto the post and tapped the rebound into an empty net – and then scored a Panenka penalty to win the game.
PSG won a penalty deep into injury time, but instead of Messi stepping up for a hat-trick, Mbappe took it instead – and skied it over the bar.
Mbappe, who had scored his previous 11 spot-kicks for PSG, said he told Messi to take the first penalty. “It’s normal, it’s respect,” the France forward said.
“He’s the best player in the world, it’s a privilege he plays with us, I’ve always said it. There’s a penalty, he takes it, period. For the second, he said, ‘Take it’.”
The French side go above Manchester City to the top of Champions League Group A on seven points.
Messi’s three goals since joining PSG as a free agent this summer have come in the Champions League, with the Argentine also netting in their 2-0 win over City.
The Barcelona legend, 34, is now on 123 Champions League goals, with Leipzig the 37th team he has scored against in the competition.
He is the fourth player to score in their first two home Champions League matches for PSG after Neymar, Alex and George Weah.
Mauricio Pochettino’s side were well below their best with only four shots on target, including three from Messi.
“We don’t need to say anything more about the quality of Kylian and Leo,” he said.
“In games when you are struggling to find solutions as a team, that is why you need players of their class.”
Leipzig, unfortunate to lose, have suffered defeat in all three Champions League games this season. They have only won four games in all competitions since Jesse Marsch took over in the summer.