Hosts Chile reached their first Copa America final in 28 years after seeing off the 10 men of Peru in a thrilling encounter in Santiago.
Chile could have had midfielder Arturo Vidal sent off early on before Peru defender Carlos Zambrano was dismissed.
Former QPR striker Eduardo Vargas then put Chile ahead after Alexis Sanchez had hit the post but Peru levelled through a Gary Medel own goal.
But Chile deservedly won it when Vargas fired home a fine second from 25 yards.
Chile have never won the Copa in 99 years of trying but will now play either Argentina or Paraguay in Saturday’s final.
Juventus midfielder Vidal was lucky to escape punishment for thrusting his hand into the face of marker Zambrano before Peru hit the post through Jefferson Farfan’s header.