Hungarian police have fired tear gas after hundreds of migrants broke through its razor wire fence on the border with Serbia.
Sky News witnessed a pregnant woman being stretchered from the scene and footage later emerged of distressed and injured children who had been in the line of fire when police used tear gas and water cannon.
A nearby medical centre in Serbia reported that two people had been seriously injured and up to 300 sought treatment.
Some 1,500 refugees who had been hoping to travel through Hungary are now blocked by a 3.5m-high fence.
Tensions spilled over at about 3pm when some migrants responded to the police tactics by throwing rocks and house bricks.
The majority ran desperately from the scene.
Sky News' Colin Brazier described the scene at the Roszke-Horgos border crossing as clashes broke out around him.
"It's very fractious," he said. "There are young men who are really angry. It's a determined hard core of maybe a score - and behind them children and mothers.
"The imagery of this is being beamed around the world - people are going to look at this in other European capitals and be concerned."
Brazier said refugees had been left at the fence without food, water and information.
Hungary arrested 29 migrants during the riot, including one it described as a "terrorist".
Serbia sent ambulances to the crossing, where thick smoke billowed after the clashes.
The country reacted furiously to Hungary's tactics.
"This is being thrown across the border line, which no state has the right to do and because of that I protest in the strongest terms," Serbian minister Aleksandar Vulin said.
Serbia later said it would send extra police to the crossing to "prevent further attacks on the Hungarian police from our territory and in a humane and respectful way distance the migrants from the fence and the Hungarian police".