Edinson Cavani was on target and Julio Cesar saved a penalty, but Brazil squeezed past Uruguay 2-1 to reach the Confederations Cup Final.
They will face the winners of Spain-Italy in the Final at the Maracanà on Sunday, while Uruguay take on the losing side in the third place decider.
Andres Scotti was suspended for the Celeste, who had a trident consisting of Diego Forlan, Luis Suarez and Napoli’s Cavani, while Paulinho returned from injury for the Selecao in Belo Horizonte. There were again clashes outside between police and protestors, as tear gas and even smoke from burning debris floated into the arena.
The referee pointed to the spot when David Luiz blatantly hauled down Diego Lugano in the box as a corner was whipped in.
Former Inter flop Forlan stepped up and aimed his penalty to the near bottom corner, but his ex-Nerazzurri teammate Julio Cesar performed a fantastic save to fingertip it round the base of the upright.
It proved decisive, as an unimpressive Brazil slowly grew in the first half and broke the deadlock. Neymar chested down a ball over the top and forced a save out of Fernando Muslera from point-blank range, but Fred turned in the loose ball from six yards. It was his third goal in four Confederations Cup games.
Cavani drew Uruguay level straight after the restart with a precise angled drive when Brazil repeatedly failed to clear a loose ball in the box. It was the Napoli striker’s first goal of the competition.
Ex-Lazio goalkeeper Muslera beat away a Hulk free kick, while Cavani showed other skills with a perfect tackle on Marcelo.
Deflected efforts from Luis Suarez and Cavani were inches off target, but Brazil improved as the second half wore on.
With four minutes to go, a Neymar corner found Paulinho’s towering header to restore their advantage. Muslera didn’t come out and was caught in no man’s land.
Brazil 2-1 Uruguay
Scorers: Fred 41 (B), Cavani 48 (U), Paulinho 86 (B)
Brazil: Julio Cesar; Dani Alves, Thiago Silva, David Luiz, Marcelo; Paulinho, Luiz Gustavo; Hulk (Bernard 63), Oscar (Hernanes 72), Neymar (Dante 91); Fred
Uruguay: Muslera; Maxi Pereira, Diego Lugano, Godin, M Caceres; Alvaro Gonzalez (Gargano 83), Arevalo Rios, C Rodriguez; Cavani, Forlan, Suarez
Ref: Osses (CHI)
Saved penalty: Forlan 14 (U)
Betting on Serie A? Bet365 are offering a 100% deposit bonus, up to £200 - find out more