David Silva's screaming free kick gave Brazil the win, but the favourites saw Neymar stretchered off and captain Thiago Silva suspended for the next clash.
Silva bundled over a Neymar corner kick in the seventh minute to put his country ahead.
But he earned his second yellow card of the tournament in the second half for barging into Colombia goalkeeper David Ospina and will misss the semi-final against Germany next Tuesday.
Luiz stepped up to smash an unstoppable 30 metre free kick past Ospina in the 78th minute. But Neymar was carried off in agony late in the game after a rough challenge from Colombia defender Juan Camillo Zuniga.
Brazil 2 - T. Silva 7, Luiz 69 Colombia 1 - Rodriguez 78 pen Halftime: 1-0