Brazil had striker Gabriel Jesus sent off in their Copa America quarter-final against Chile but held on for a 1-0 win to set up a semi-final against Peru.
Lucas Paqueta put Brazil ahead in the second half before Manchester City’s Jesus was sent off within two minutes for a high challenge on Eugenio Mena.
Chile piled on pressure but the closest they came to an equaliser was Ben Brereton’s header hitting the bar.
Peru advanced after beating Paraguay 4-3 on penalties after a 3-3 draw.
Brazil and Peru will now meet in a repeat of the 2019 final, which the former won 3-1.
“Jesus was just bad luck,” said Brazil forward Neymar after the win against Chile. “He had his eye on the ball, not on the man, and unfortunately, he was sent off.
“Every day that goes by we have tests to make us stronger, to prove that we can play under all kinds of circumstances.
“Chile are a good team, they have great players and it is very difficult with a man less. Everyone deserves praise – the defence, the midfield, the forwards.
“We managed to withstand something that rarely happens to this team. It was a big test for us.”
Peru came through an action-packed game against Paraguay, who took the lead through captain Gustavo Gomez early on.
However two goals from Gianluca Lapadula put Peru in front and, despite Paraguay having Gomez dismissed just before half-time, they equalised through Junior Alonso.
Yoshimar Yotun restored Peru’s lead but, after they went down to 10 men when Andre Carillo was sent off in the 84th minute, Gabriel Avalos scored a last-minute leveller to send the tie to penalties.
Paraguay missed with three of their spot-kicks before Miguel Trauco scored the decisive penalty for Peru.