Didier Deschamps's side fell behind early in their World Cup qualifier, but hit back before half time as goals from Dimitri Payet and Antoine Griezmann in between Gameiro's two strikes saw the hosts get their campaign up and running.
Bulgaria went into the match top of Group A after their dramatic late 4-3 triumph over minnows Luxembourg made them the only winners on matchday one, and it took just five minutes for them to take the lead in Paris too.
The hosts, back at the Stade de France for the first time since their defeat to Portugal in the final of Euro 2016, created their first clear chance of the night shortly afterwards, but Gameiro's effort from inside the box was well blocked before it could test the keeper.
Gameiro would not have to wait much longer for the equaliser, however, with Sagna playing his part to atone for his early error, delivering a cross that the Atletico Madrid striker glanced home having got in front of his man.
One quickly became two for the home side as they turned the match around inside three minutes, with Payet's curling ball into the box eluding defenders and attackers alike before nestling into the bottom corner.
France had all but secured the win by half time with a third goal, and this time Bulgaria were architects of their own downfall as Dimitar Pirgov - making his debut for the team - gifted the ball straight to Griezmann inside his own half.
The Atletico man, who was officially presented with the Player of the Tournament award for Euro 2016 before kickoff, did not need a second invitation and fired an effort into the bottom corner to send his side into the break with a two-goal cushion.
Paul Pogba was close to getting in on the act shortly before the hour mark when he picked up a loose ball before going for goal from the edge of the area, but his effort flew narrowly wide.
A fourth goal did arrive just one minute later, though, and it was the two Atletico men who combined for it as Griezmann fired a low ball into the box that Gameiro steered home for his second of the night on his first international start for almost five years.
Bulgaria - bidding to reach a first World Cup since 1998 - showed few signs of getting back into the match, and it could have been even worse had Blaise Matuidi's strike 13 minutes from time crept in rather than crashing against the upright.
As it was, though, France saw out the victory comfortably to make it 14 matches without defeat in normal time, taking them joint top of Group A alongside Netherlands and Sweden.