The law was passed with 106 votes in favour and 28 against.
The move — announced a day after Scottish voters rejected independence — is opposed by Spain's central government, which has already said it will challenge the Catalan law in the nation's Constitutional Court.
Spanish Prime Minister Mariano Rajoy has argued that only the central government has the power to call a referendum on sovereignty.
Proud of their distinct Catalan language and culture, many of Catalonia's 7.5 million inhabitants feel short-changed by the national government in Madrid, which redistributes their taxes.
Catalonia formally adopted the status of a "nation" in 2006 but Spain's Constitutional Court later overruled that claim.