On a narrow 220-215 vote, including the support of one Republican, the House endorsed a bill that would expand coverage to nearly all Americans and bar insurance practices such as refusing to cover people with pre-existing conditions.
Most Republicans criticized its $1 trillion price tag, new taxes on the wealthy and what they said was excessive government interference in the private health sector.
Democrats cheered and hugged when the 218th vote was recorded, and again when House Speaker Nancy Pelosi pounded the gavel and announced the results.
The battle over Obama’s top domestic priority now moves to the Senate, where work on its own version has stalled for weeks as Senate Democratic leader Harry Reid searches for an approach that can win the 60 votes he needs.
Any differences between the Senate and House bills ultimately will have to be reconciled, and a final bill passed again by both before going to Obama for his signature.