The Selecao came into the game in high spirits after dispatching South Korea 4-1 in the round of 16 but Croatia proved stubborn to break down.
When Brazil's fluid attack managed to carve out clear cut openings they were thwarted by the big frame of Dominik Livakovic in the Croatia goal.
The opening 90 minutes failed to produce any goals but the game burst into life in extra time when Neymar Brazil the lead in the 105th minute.
But with three minutes of second half extra time remaining Bruno Petkovic's deflected effort beat Alisson Becker to level the scores once again.
Livakovic was Croatia's hero in the penalty shoot out win over Japan in the round of 16 and he repeated the heroics by saving Rodrygo Goes' first penalty for Brazil before Marquinhos struck the post with another effort for the South Americans.
Croatia scored all their four penalties to make the World Cup semi-finals for a second straight tournament whiles Brazil's quest to win a sixth crown will have to wait for another four years.