Paulinho powered home a header four minutes from time to give Brazil a 2-1 win over Uruguay and take the host nation into the decider.
After early caginess from both sides, the game exploded into life when Uruguay were awarded a penalty in the 13th minute after Chelsea defender David Luiz wrestled Diego Lugano to the ground. However, Diego Forlan's spot-kick was comfotably saved by Julio Cesar.
Brazil took the lead in the 40th minute when Neymar latched onto a long ball from Paulinho and, after his initial shot was saved by goalkeeper Fernando Muslera, Fred pounced on the loose ball to score.
It took Uruguay three minutes of the second half to draw level.
The second half threw up few good chances, but Brazil were not to be denied as Paulinho rose to head home a Neymar corner in the 86th minute to propel his side into the final against the winners of tonight's second semi-final between Spain and Italy.
The decider will take place at Rio de Janeiro's Maracana Stadium on Sunday.
Brazil made one change from the team that beat Italy in their last group game, bringing Paulinho in to replace Hernanes in midfield.
Uruguay left out Abel Hernandez, the young Palermo forward who scored four goals against Tahiti in midweek, and opted instead for their big name front line of Luis Suarez, Forlan and Cavani. The visitors knew Brazil would come at them straight from the kick-off and they took the sting out their opponents by slowing the game right down.
Both sides looked nervous and the early moments were tense, with neither side able to string any passes together before the missed Forlan penalty.
Forlan tried to make amends when he unleashed a curling strike on the half-hour from outside the penalty area which crept just wide of the post.
Both sides struggled to gain control, with Uruguay's front three failing to get the better of Brazil's defence and Neymar a shadow of the player who won the man-of-the-match award in his last three games.
The win was Brazil's fourth in four games at this year's tournament and their fifth in-a-row under Luiz Felipe Scolari, a run that belies their 22nd place in the FIFA rankings – their lowest ever.