The MPs wanted the UK to join a customs union if it does not agree a free-trade deal with the EU.
But the government, which says a customs union would stop it striking new trade deals, won by 307 to 301.
Ahead of the vote, Tory MPs were told a defeat would lead to a vote of no confidence in the government, sources told the BBC’s John Pienaar.
The government did, however, lose a separate vote on its Trade Bill on the regulation of medicines after Brexit.
MPs backed an amendment by 305 votes to 301 that would keep the UK in the European medicines regulatory network.
There were 12 Tory rebels in both the customs and medicines votes – but the government’s total was boosted by four Labour MPs in the customs vote.
The customs union allows for tariff-free trading between members with a common tariff set for imports from the rest of the world. (BBCNEWS)