The 58-52 vote was mostly along party lines, with a few Republicans joining all Democrats in voting against the measure, the Lansing State Journal reported.
The White House issued a statement saying President Barack Obama opposed so-called right-to-work laws, including the one under consideration in Michigan.
"The President believes our economy is stronger when workers get good wages and good benefits, and he opposes attempts to roll back their rights," the statement said. "Michigan -- and its workers' role in the revival of the U.S. automobile industry -- is a prime example of how unions have helped build a strong middle class and a strong American economy.
The vote came as union members and supporter demonstrated at the state capital in opposition to the bill. At one point state officials ordered the Capitol building locked down but an Ingham County Court judge issued an injunction ordering the building be reopened. When the building remained closed, all 46 House Democrats staged a walkout in protest before returning for the vote, the newspaper said.
Republican Rep. Mike Shirkey called the vote "a monumental decision that will give unions the freedom to make their case while giving workers the freedom to make a choice."
Democratic leaders said they would request the House bill be reconsidered.
The Michigan state Senate has been debating a similar bill.