The Senate's members are not directly elected by voters, but instead by tens of thousands of local councillors who are themselves elected by the people.
After Macron's La République en Marche (LREM) party performed woefully in local elections earlier this year, it was never expected to make any significant impact in the Senate vote.
While the chamber has some authority, especially over constitutional issues, it lacks the power of the lower house (the Assemblée nationale), which has been controlled by LREM since 2017.
Nevertheless, the leader of the right-wing Les Republicains Christian Jacob told France Inter radio: “We have renewed ourselves with this victory.”
The party claimed to have upped its Senate seats by 10 to 154 in the 348-seat chamber.
The election showed that the opposition is not complacent, said Bruno Retailleau, head of the party in the Senate.
However, because of the volatile nature of political affiliation in the Senate, the full breakdown will probably only become clear on Thursday when it meets to elect its speaker.
The poll – held every three years for half the chamber's seats – was not a disaster for the LREM, which was expected to hold on to its current 23 members.
Meanwhile, the Greens said they expected to return at least 10 senators and the Socialist Party was expected to lose some seats but maintain its status as the second biggest faction.
But the health of LREM, and in particular its failure to put down roots at the local level, is a growing headache for Macron as he prepares to seek re-election in 2022.
Roughly two dozen MPs defected from LREM to other groups earlier this year, robbing the party of its overall majority, although the make-up of the Assemblée nationale means it can still pass legislation.