Brazil kept their nerve in a penalty shoot-out against Uruguay to clinch a Copa America final showdown against Argentina.
Marcelo Sosa's header gave Uruguay a deserved lead, but some dreadful finishing proved to be their undoing.
Adriano equalised for Brazil who almost avoided penalties when Luis Fabiano went agonisingly close near the end.
Brazil converted all five of their penalties, with Julio Cesar's save from Vicente Sanchez proving decisive.
Uruguay made a lively start and nearly went ahead in the
second minute when Dario Silva was given a clear run on goal but
shot straight at goalkeeper Julio Cesar.
Silva was again the culprit 11 minutes later when he
contrived to miss an open goal from point-blank range, somehow
turning Carlos Diogo's header onto the crossbar when it seemed
impossible to miss.
Uruguay, however, took the lead when Javier Delgado floated
over a free kick from the left and midfielder Sosa stooped to head the ball past Julio Cesar.
Sosa and Delgado both came close to increasing Uruguay's
lead before halftime, the latter seeing his swerving free kick
turned away by Julio Cesar.
Uruguay goalkeeper Sebastian Viera made two good first half
saves, punching over Kleberson's drive early on and then turning
away a cunning Edu chip in injury time.
Brazil emerged in a different frame of mind after halftime
and levelled almost straight away when Alex set Luis Fabiano
away on the right and his low shot was turned in from close
range by Adriano.
Adriano threatened with two left-foot shots in the next
three minutes as Brazil began to take control.
The game lost momentum before bursting back into life in the
final five minutes, when Luis Fabiano was agonisingly close for
Brazil and Maicon was denied by Viera.
Silva, whose first-half missed was to prove costly, had another good chance but his shot was blocked by Juan.
In the penalty shoot-out, Luisao, Fabiano, Adriano and Renato all slotted home their penalty kicks for Brazil, who came to the tournament without many of theri stars such as Ronaldo and Ronaldinho.
But after Silva, Viera and Omar Pouso netted for Uruguay, Julio Cesar plunged to his left to stop Sanchez's penalty, leaving Alex to slot the decider past Viera.
Brazil: Julio Cesar; Maicon, Luisao, Juan, Gustavo Nery, Renato, Kleberson (Diego, 75), Alex, Edu (Julio Baptista, 75), Adriano, Luis Fabiano.
Uruguay: Viera, Diogo, Bizera, Montero, Dario Rodriguez, Sosa, Cristian Rodriguez (Sanchez 70), Delgado, Perez (Pouso, 81), Silva, Bueno (Forlan 62).
Referee: Marco Rodriguez (Mexico).