The amendment was tabled by ex-Labour deputy leader Harriet Harman
The amendment, tabled by ex-Labour deputy leader Harriet Harman, was rejected by 332 MPs, while 290 voted for it.
Green co-leader Caroline Lucas said the outcome of the vote was "unforgivable", adding: "These are people's lives not commodities."
And Labour's David Lammy accused Tories who voted against the amendment of lacking "moral leadership".
Theresa May has repeatedly refused to agree the status of EU nationals until negotiations with Brussels formally begin.
But earlier today the Home Secretary Amber Rudd insisted it will be a top priority once the talks get under way.
She added: "We owe it to those many European citizens who have contributed so much to this country to resolve this issue as soon as possible."
Just three Tory backbenchers – ex-Chancellor Ken Clarke, Tania Mathias and Andrew Tyrie – voted in favour of Ms Harman's amendment.
Former minister Ed Vaizey considered joining them but said he had been "deeply reassured" by Mrs Rudd's comments.
He said EU nationals make a "huge contribution" to his constituency and that their rights must be safeguarded.
MORE TO FOLLOW