The 265-142 vote was a victory for Bush and his allies, who urged House Republicans to reject Democrats' claims that changes to the legislation had met their chief concerns. If the same vote occurs on a veto override attempt, Bush will prevail, as he did earlier this month when he vetoed a similar bill.
Liberal groups continue to run attack ads against Republicans siding with Bush on the issue, which many Democrats consider a winner for their party.
Democratic leaders said changes to the bill, which would add $35 billion to the State Children's Health Insurance Program, had addressed critics' concerns about participation by adults, illegal immigrants and families able to afford health insurance. But GOP leaders called the changes insignificant and politically motivated.
The decade-old health program is aimed at families that do not qualify for Medicaid but are too poor to afford medical insurance. As with the bill Bush vetoed, the revised measure would add would $35 billion over five years, financed by a 61-cent increase in the federal excise tax on a pack of cigarettes.
Under the revisions, the program would exclude families earning more than three times the federal poverty rate. Low-income childless adults, which some states cover, would be phased out in one year. And states would have to be more rigorous in checking the validity of applicants' Social Security numbers, an effort to exclude illegal immigrants.
House Minority Leader John Boehner, R-Ohio, likened the revisions to "window-dressing rather than substantive changes."
However, House Speaker Nancy Pelosi, D-Calif., said the legislation "has the support of the American people."
Before Thursday's vote, the White House announced that Bush would veto the revised bill because it does too little to enroll low-income families ahead of those somewhat better off, and because it would cost more than the earlier bill.
Democrats said it would cost more because it would cover more low-income children, the program's chief goal.