Italy's Senate has voted to legally recognise civil unions, in what is being seen as a compromise step to give some rights to gay couples after a bitter, years-long battle.
Premier Matteo Renzi described the passage of the bill on Thursday as "historic".
But gay and lesbian groups denounced the watered-down legislation as a betrayal because Renzi's Democratic Party sacrificed a provision to allow gay adoption in order to ensure passage.
The legislation, which must still pass the lower Chamber of Deputies, is significant for an overwhelmingly Roman Catholic country, although Pope Francis remained conspicuously silent as debate raged in recent months.
The bill passed 173-71, well over the threshold necessary.
After being stalled in parliament for years, the legislation was spurred on after the European Court of Human Rights condemned Italy last year for discriminating against homosexual couples.
Ruling in favour of three homosexual couples, the court found that Italy had failed to provide gay and lesbian couples with even the most basic rights owed to couples in stable relationships, including inheritance rights, and recommended civil union recognition.
The legislation stops far short of authorising gay marriage, which was passed last year in predominantly Catholic Ireland and was legalised as well across the United States.
More painful for the LGBT community was Renzi's decision earlier in the week to scrap the provision allowing for the adoption of biological children of their partners.
"We are outraged, angry, disappointed," said Marilena Grassadonia, president of Rainbow Families, the Italian association of homosexual parents.
Defenders of the bill insisted that the legislation preserved the right of Italian judges to grant adoptions to gay partners on a case-by-case basis, as has been the practice to date.