Indigenous protesters in traditional headdress clashed with police in Brazil's capital, resulting in one officer being shot in the leg with an arrow.
The violence resulted in the cancellation of a ceremony to open the exhibition of the World Cup trophy.
In clashes broadcast live on television, riot police fired tear gas into small pockets of protesters as they approached Brasilia's new stadium that will host Cup matches.
Protesters were seen picking up the gas canisters and throwing them back at officers, along with stones and pieces of wood.
Some of the demonstrators were armed with bows and arrows, and fired a few arrows at mounted police, one of which hit an officer in the leg. Authorities said surgery was required to remove it.
Activist groups told the newspaper Globo that at least two indigenous people were also injured, though it was not clear how it happened or the status of their condition.
The clashes, which drew about 300 demonstrators, ended by nightfall.
But the violence forced officials to call off a ceremony just outside Brasilia's stadium where the World Cup trophy was to be exhibited.
Indigenous activists were there to complain about legislation before congress that threatens to shrink the size of some reserves for indigenous groups.
They were joined by demonstrators rallying against Brazil's hosting of the World Cup. Many Brazilians are angered about the billions being spent on the tournament, saying the money should have gone to improving Brazil's woeful public services.
Brazil has seen almost daily protests in the weeks leading up to the World Cup, which begins on June 12.
Last year, huge anti-government protests took over streets in dozens of cities during the Confederations Cup, which is international football's warm-up tournament for its premier event, the World Cup.
Recent protests have been far smaller than those seen last year, when a total of a million people took to the streets across Brazil on a single night.
Elsewhere in Brazil yesterday, about 500 teachers peacefully rallied on a main avenue in Sao Paulo, South America's largest city. They have been on strike for about a month, demanding higher salaries.