The US House of Representatives has approved a bill giving workplace rights to gay men, lesbians and bisexuals.
The bill will now go before the Senate
The measure would make it illegal for decisions on hiring, firing, pay or promotion to be made on the basis of an employee's sexuality.
Democrat Senator Ted Kennedy is set to introduce a similar bill to the Senate, and if approved it would then pass to the president for consideration.
However, President George W Bush has said he would veto it.
The measure was approved in the Democratic-controlled House by 235 votes to 184, well short of the two-thirds majority needed to overturn a presidential veto.
Churches and the military would be exempt from the bill, known as the Employment Non-Discrimination Act.
The bill's backers said the vote was a major civil rights advance for gays.
"Bigotry and homophobia are sentiments that should never be allowed to permeate the American workplace," said James Clyburn, the House majority whip.
Before the House vote, critics expressed concerns that the bill would infringe the rights of people who oppose homosexuality for religious reasons.
They also said it could even force employers to document their employees' sexual orientation to guard against discrimination lawsuits.
Some gay rights groups also opposed the measure on the grounds that it would not protect transgender people from discrimination in the workplace.
The Senate will now consider a similar bill, to be proposed by Sen Kennedy and co-sponsored by Republican Senator Susan Collins.
If it is approved, it will go to the White House for the president's consideration.
Mr Bush is said to have concerns about the measure's constitutionality and its possible impact on religious rights.
"The bill turns on imprecise and subjective terms that would make interpretation, compliance and enforcement extremely difficult," a White House statement said.