The vote was swayed by a last-minute decision by centrist Kulanu party leader and Finance Minister Moshe Kahlon, who previously opposed the bill on grounds that it may harm the Israeli Supreme Court.
Following a meeting with Prime Minister Benjamin Netanyahu, the finance minister said an agreement was reached for the Knesset speaker to announce that no damage would be caused to the court.
The Supreme Court may challenge the bill over its contradiction of international law.
The settlement bill proposes to legalize Israeli settlers to remain on Palestinian territory while offering financial compensation to owners of the land. It comes days after the Supreme Court refused the government's appeal to delay the evacuation of the illegal Amona settlement, which was ordered to be demolished in an earlier court decision.
Over 500,000 Jewish settlers live in the West Bank, including East Jerusalem, according to United Nations figures. The settlements are considered illegal by the United Nations, and West Bank territory is considered occupied territory by the International Court of Justice. The West Bank has been occupied by Israel since 1967.