The two teams repeated the scoreline of 1-1 from the first leg, game with extra time failing to find a winner.
In normal time, it was Udinese who edged ahead in the tie, through Pablo Armero after 25 minutes.
Dusan Basta crossed the ball from the right, and left-winger Armero was left free at the far post to head home from close range.
The Italian side nearly doubled their lead 15 minutes later when Antonio Di Natale's cross was met by Maurizio Domizzi, but the Braga goalkeeper was equal to it.
The away side started the second half quickly, with Hugo Viana causing problems for Udinese.
The central midfielder found space outside the box twice in five minutes, forcing a good save from Beto, before blasting the second effort high and wide.
With 20 minutes to go Braga found an equaliser. Substitute Ruben Micael rose highest to head home Mossoro's corner to level the tie once more.
Braga looked the more likely to get a winner as the game went on with Viana again seeing a curling shot saved, but extra time was needed with the score 1-1 after 90 minutes.
Udinese substitute Giovanni Pasquale had the best chance of the added period, forcing a good save out of Beto from a powerful shot.
Neither side could find a goal though and the tie went to penalties.
After both sides dispatched their opening two penalties it was Udinese who blinked first. Substitute Maicosuel attempted to chip the ball but Beto read his attempt and caught it.
Alan then scored for Braga to confirm their lead.
Both sides scored their remaining spot kicks and it was Braga who progressed.