"Serbian passport holders and cars registered in Serbia cannot enter Croatia until further notice," a police officer told Reuters by telephone from Bajakovo, the main crossing point between the two ex-Yugoslav republics.
Serbia banned Croatian cargo traffic and goods late on Wednesday, helping plunge bilateral relations to their lowest point since the overthrow of late Serbian leader Slobodan Milosevic in 2000.
Belgrade imposed its embargo in retaliation for border restrictions levied by European Union member Croatia, which has hit out at its eastern neighbor for directing the flow of migrants coming up through the Balkan peninsula over their joint border.
Zagreb had banned all trucks but those carrying perishable goods from entering the country from Serbia and shut seven of eight road border crossings, saying Serbia should direct the migrants to Hungary and Romania too.
“I am sorry about this. We had planned to open the border today but now we have to react to this," Croatian Prime Minister Zoran Milanovic, whose centre-left cabinet faces a parliamentary election this year, said after Serbia imposed the ban.
"There will be no war or violence, everything will be calm, but this is not normal behavior (by Serbia)," Milanovic said on television from Brussels, where he was attending a summit of EU leaders.
More than 40,000 migrants, many of them Syrian refugees, have entered Croatia from Serbia since Tuesday last week when Hungary, both countries' neighbor to the north, barred their entry to the EU by sealing its southern border with Serbia with a metal fence.
Both Serbia and Croatia were part of communist Yugoslavia but Croatia broke away in 1991 and fought a war against Belgrade-backed Serb rebels until 1995. Croatia joined the EU in 2013, and Serbia wants to follow suit.
Serbia has been bussing migrants straight to the Croatian border after they enter Serbia from Macedonia.