Indigenous protesters in traditional dress squared against Brazilian police mounted on horses in the country's capital, just outside a new football stadium that will host World Cup matches this year.
In clashes broadcast live on television on Tuesday, riot police fired tear gas into small pockets of protesters, some of whom picked up gas canisters and threw them back at officers, along with stones and pieces of wood.
The activists were demonstrating against legislation that threatens to shrink the size of some reserves for indigenous groups, the Associated Press news agency reported.
Some of the demonstrators were armed with bows and arrows, and fired a few arrows at mounted police.
Police said they had no information on any injuries during the rally, which saw about 300 protesters gather in Brasilia's main area. The clashes ended by nightfall.
Anti-World Cup rallies
The indigenous protesters 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 poor 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 1 million people took to the streets across Brazil on a single night.
Elsewhere in the country on Tuesday, about 500 teachers peacefully rallied on a main avenue in Sao Paulo, South America's largest city. The educators have been on strike for about a month, demanding higher salaries.