The Senate in Italy has approved a watered-down bill allowing civil unions for same-sex and heterosexual couples.
The motion was backed by a 173-71 vote after a deal was reached to remove a provision allowing gay adoptions and other clauses.
Gay groups earlier described the bill, which still needs to be backed by the lower house, as a betrayal.
Italy is the only major Western European country with no civil partnerships or gay marriage.
Prime Minister Matteo Renzi - who had long promised to pass a civil unions bill - described Thursday's vote as "historic".
However, he had to agree to remove the gay adoption provision to overcome opposition from a number of lawmakers in the overwhelmingly Catholic country.
"This text once again does not take into consideration children who need definite laws and protection," Flavio Romani, president of gay rights group Arcigay, was quoted as saying by Reuters.
"The law that has come out of all this is lacking its heart," he added.
Last year, the European Court of Human Rights ruled that Italy had violated human rights by failing to offer enough legal protection for same-sex couples.
A small number of municipalities in Italy currently allow local civil unions but there is a national ban on same-sex marriage and the benefits of the existing provision are limited.
Last month, tens of thousands of people marched in cities across the country, demanding legal recognition for same-sex couples.