The lower house of parliament passed the bill on a first reading on Sunday night buy 228 to 139 with 24 abstentions.
There were 61 hours of lively debate, spread over the last week.
Opposition to the measure came both from the left and the right - athough for different reasons.
Right-wingers said it is too soft, while left-wingers dubbed it repressive.
The bill has also opened divisions in Macron's LREM, with some members challenging the plan to double to 90 days the maximum time migrants can be held in detention.
Former Socialist Jean-Michel Clément voted against the bill - a first for Macron's party - and, with the threat of expulsion hanging over his head, announced he was leaving its ranks.
Fourteen LREM MPs abstained.
MP quits LREM
Interior Minister Gérard Collomb said the bill aims for "better controlled" immigration, halving the waiting time for asylum applications to six months while making it easier to deport those considered to be "economic" migrants.
Those accepted will be given more help to integrate and better access to work, he promised.
Rights group Amnesty International on Sunday evening slammed the bill as "dangerous for migrants and asylum-seekers".
Following a demonstration by far-right activists at the French-Italian border this weekend, Collomb announced he will send "significant" security reinforcements to the area.