American star Jennifer Lopez added a dash of glamour to the colourful World Cup opening ceremony yesterday in a vivid contrast to the violent anti-tournament protests in the city.
J-Lo, wearing a carnival-inspired and revealing green outfit, appeared from a trapdoor along with rapper Pitbull to sing the official World Cup song with Brazilian singer Claudia Leitte.
The ceremony was held ahead of the opening game between Brazil and Croatia.
With her participation not confirmed until the last minute, J-Lo was a welcome sight as she rose up from inside a giant ball positioned on the stadium floor.
Gold-shirted fans started arriving at Corinthians Arena on Thursday morning, several hours before kick-off, and there was a huge cheer when the opening ceremony started.
Figures dressed as trees walked on stilts and children representing flowers bounced on trampolines around the huge, glowing ball in the centre of the stadium.
It was not long before samba music kicked in and traditional dancers celebrating Brazil's ethnic and geographical range took the floor.
Acrobats dressed as balls replaced the dancers and 64 children came in juggling balls on strings, to another big roar as a giant Brazilian flag entered the rapidly filling arena.
Finally the big ball opened to reveal Brazilian singing star Leitte, swiftly followed by J-Lo and Pitbull.
J-Lo, showing off her trademark Latin dance moves, belted out the official World Cup song, "We Are One (Ole Ola)" with her fellow performers before they disappeared back down the trapdoor.
A worldwide TV audience of several hundred million is expected for the opening game in which hosts and favourites Brazil will take on Croatia.
Earlier, military police clashed with masked anti-World Cup protesters demonstrating a few kilometers (miles) away against the huge cost of staging the tournament.
Police fired tear gas and rubber bullets to break up an earlier, smaller protest near a Sao Paulo subway station.
Anarchist demonstrators menacingly dressed in black shirts and masks lit bonfires of rubbish in the city after armoured police sought to quell protests.
Preparations for the World Cup have been dogged by months of protests, reflecting widespread public anger over the record $11 billion lavished on the event.
A cannister fired by police hit and injured a CNN journalist and an AFP correspondent saw one woman in tears clutching her arm.
In Rio de Janeiro, striking ground staff briefly blocked a road leading to the city's international airport.
Around 1,000 protesters also gathered in the city centre, a small group of them scuffling with police, who arrested four people.