Colombia pulled the level in the 61st minute as midfielder Luis Diaz scored in a narrow angle.
The regular time ended 1-1 so the penalty shootout decided the winner.
Argentina won 3-2 on penalties to reach the final to be played at Maracana Stadium in Rio de Janeiro on Saturday.
Before the final, Colombia will take on Peru in the third-place play-off on July 9 at Estadio Nacional De Brasilia.
Brazil are the defending Copa America champions.