The security measures, in force since attacks in Paris that killed 130 people in November 2015, are now expected to be approved by the Senate on Thursday. It is the fifth extension of the state of emergency, which gives police extended powers of search and arrest.
The overnight vote in the National Assembly passed by 288 to 32, with only Left Front lawmakers, protesting ecologists and a handful of centre-right Republicans voting against.
The extension, which will give the country its longest uninterrupted state of emergency since the Algerian War in the 1960s, will span the two-round presidential election in April-May and June parliamentary polls.
The government has cited a heightened risk of jihadist attacks coinciding with the polls.
Ahead of the vote new Interior Minister Bruno Le Roux stressed that France faced “an extremely high” risk of a terrorist attack.
Since the last extension — shortly after the Bastille Day attack in July when a Tunisian jihadist rammed a truck through a crowd in Nice, killing 86 people — he said “we have foiled no fewer than 13 attacks, involving about 30 individuals”.
With numerous public meetings and campaign rallies expected in the coming months, Le Roux said “the intense electoral period we are entering increases the risk of further terrorist acts”, echoing weekend comments by his predecessor, newly-appointed Prime Minister Bernard Cazeneuve.
The extension until July 15 would also allow a new president — incumbent Francois Hollande is not seeking re-election — to assess security and prolong the state of emergency if necessary.
Hollande's tenure has been marred by the three major Islamist-inspired terror attacks — against Charlie Hebdo magazine in January 2015, then in Paris the following November and the Bastille Day attack in Nice.
Cazeneuve, the former interior minister who coordinated the introduction of the state of emergency, took over as prime minister on Tuesday after Manuel Valls stepped down to seek the Socialist nomination for the presidency.