After a missed Diego Forlan penalty, Fred opened the scoring on 41 minutes before Uruguay equalised early in the second half through Edinson Cavani.
Paulinho was the hero for the Selecao when he headed home on 86 minutes for the winner to set up a decider against Spain or Italy at the Maracana.
As expected it was a tough battle between the South American rivals with Uruguay left to rue a missed opportunity from Forlan from the spot.
Chilean referee Enrique Osses awarded a penalty to the Celeste after Brazil defender David Luiz was adjudged to have dragged down Diego Lugano in the box at a corner.
Forlan stepped up to face Julio Cesar and the goalkeeper dived to his left and tipped the ball around the post.
Both sides struggled to find their fluency but there were glimmers from Brazil as Hulk barged his way through the Uruguay defence just before the half-hour mark, only to fire his shot over the bar.
Forlan then tried his luck from range at the other end, taking the ball before swivelling and releasing the trigger, leaving striker Luis Suarez cutting a frustrated figure in the area as he called out for the pass.
Brazil then started to press, with Neymar racing down the left and opening up for Hulk in the centre, but the Uruguay defence held firm.
Tempers started to fray with Brazil’s Luis Gustavo shown a yellow card to a high follow through as the local derby threatened to bubble over.
The home side, however, then seized the advantage, with star man Neymar unsurprisingly at the heart of the action.
A long ball allowed the 21-year-old to break into the box, where he took it on his chest and got a shot away that was saved by Fernando Muslera, only for Fred to see home the rebound in what was a welcome breakthrough after a difficult first period.
It was not the sweetest of contacts from Brazil’s No. 9 but it was just what was called for in the circumstances.
However, the lead was short-lived as Cavani scored three minutes into the second half for Uruguay after Brazil wasted four chances to clear the ball.
It was a bolt from the blue, especially as Cavani had failed to impose himself in the game, but he snuck in to equalise after Thiago Silva tried to play a square pass to Marcelo, allowing him to nip in and win possession and spear a left-foot shot from the right perfectly past Cesar and into the bottom left-hand corner of the goal.
Forlan almost put Uruguay ahead with a header from a free-kick but this time the Brazil goalkeeper was able to palm the ball over for a corner, which came to nothing, while Cavani had another shot blocked in the 79th minute.
It was Brazil that had the final word as Paulinho, at the far post, headed it into the final from Neymar’s in-swinging corner to send the home crowd into raptures.
Source : PA Sport