Media playback is not supported on this device
Captain Thiago Silva set Luiz Felipe Scolari's side on the way with an early goal, and Brazil looked to be set for a comfortable passage into the last four after David Luiz's brilliant second-half free-kick.
In a magnificent atmosphere built on a cascade of colour and a wall of sound, new World Cup star James Rodriguez set up a thrilling finale when he pulled a goal back from the penalty spot with 10 minutes left.
In a frantic closing phase, Colombia were unable to force the chance that could have brought extra time, and it is the hosts who will meet Germany in Belo Horizonte on Tuesday, a game which will be live on BBC One.
"It was a fantastic occasion and a great game. Not in terms of quality but in terms of endeavour and passion.
"The game was scrappy and bitty but Brazil wanted it that little bit more. Colombia were overawed from the beginning and lost the game after conceding the first goal.
"The South American way is win at all costs and you saw that today. Yes, they gave away fouls, yes David Luiz was trying to put James Rodriguez off for the penalty, but if Brazil win this World Cup playing like that nobody will be bothered.
"If they lose, different story."
But Brazil will be without superstar and main striking hope Neymar, who has been ruled out of the World Cup with a fractured vertebra after being kneed in the back by Juan Zuniga.
They will also be missing captain Thiago Silva, who is suspended after being booked.
Colombia had complaints of their own, chiefly the lack of protection offered to Rodriguez, who was on the receiving end of some fierce challenges as Brazil sought to nullify his influence.
He broke down in tears at the final whistle as he was consoled by the Brazil players who had offered him none of that commodity during a harrowing physical ordeal which proved he has the courage to go with his natural ability.
Brazil and their supporters, in contrast, went wild with elation at the final whistle. The goal of reaching the final - and making up for the 1950 World Cup loss to Uruguay in Rio that is still one of this nation's darkest sporting days - lives on.
Germany, who beat France 1-0 in their quarter-final, will need to show mental strength to cope with the tidal wave of emotion and support that Scolari hopes will carry Brazil to the Maracana a week on Sunday.
Fortaleza offered up a cauldron of noise and a sea of yellow shirts in an atmosphere that ensured Brazil would launch into a series of adrenalin-fuelled attacks.
Scolari's hope was to push Colombia into unknown territory and the strategy was helped by a goal built largely on defensive carelessness after seven minutes.
Neymar's corner was a routine affair with little serious menace but it was allowed to drift to the far post, where Carlos Sanchez switched off to allow Silva to bundle home.
Scolari and his players were just as aware of the threat posed by Juan Cuadrado as the celebrated Rodriguez, and he illustrated exactly why with a shot that was inches away from 20 yards.
This was much more like it from Brazil, though, and it would have been no surprise had they extended their advantage by the interval as they showed genuine threat against a somewhat timid Colombian side.
It was down to keeper David Ospina that they did not as he twice saved well from the excellent Hulk, on the second occasion recovering well to then clutch Oscar's long-range effort.
Scolari insisted Brazil had formulated no special plans to deal with Rodriguez, but it was clear they were determined to test the 22-year-old in a succession of reckless physical challenges.
Media playback is not supported on this device
It was after Rodriguez was shown a yellow card for a foul on Hulk by the extraordinarily lenient referee Carlos Velasco Carballo that Brazil scored the goal that effectively sent them into the last four.
Luiz came in off his long run to strike a 25-yard free-kick that left the stretching Ospina clutching at thin air as it flew high to his left.
The vast bowl of a stadium reverberated to an expression of relief as well as celebration.
It came just after Colombia thought they were back in the game, only to see Mario Yepes's goal ruled out for an earlier offside.
To his credit, Rodriguez was undeterred by Brazil's close attentions and it was his astute pass that led to substitute Carlos Bacca being upended by Julio Cesar. After a short delay, and some well-chosen words from Luiz, Rodriguez was calmness personified to send the keeper the wrong way.
Colombia threw everything forward in the last moments, but once again Brazil held on to seal the victory.
Brazil v Germany will be live on BBC One on Tuesday, 8 July from 20:30 BST
Match ends, Brazil 2, Colombia 1.
Second Half ends, Brazil 2, Colombia 1.
Ramires (Brazil) wins a free kick on the right wing.
Foul by Cristian Zapata (Colombia).
Attempt missed. Adrián Ramos (Colombia) header from the centre of the box is too high. Assisted by Juan Quintero with a cross following a set piece situation.
Foul by Hernanes (Brazil).
Juan Zuñiga (Colombia) wins a free kick on the right wing.
Foul by Fred (Brazil).
Carlos Sánchez (Colombia) wins a free kick in the defensive half.
Attempt missed. Adrián Ramos (Colombia) header from the centre of the box misses to the left. Assisted by James Rodríguez with a cross following a corner.
Corner,  Colombia. Conceded by Marcelo.
Marcelo (Brazil) wins a free kick in the defensive half.
Foul by James Rodríguez (Colombia).
Attempt blocked. Carlos Bacca (Colombia) right footed shot from outside the box is blocked. Assisted by Carlos Sánchez.
Delay over. They are ready to continue.
Substitution, Brazil. Henrique replaces Neymar because of an injury.
Delay in match Neymar (Brazil) because of an injury.
Oscar (Brazil) wins a free kick on the left wing.
Foul by Juan Quintero (Colombia).
Substitution, Brazil. Hernanes replaces Paulinho.
Corner,  Colombia. Conceded by Oscar.
Offside, Colombia. Carlos Bacca tries a through ball, but Pablo Armero is caught offside.
Fernandinho (Brazil) wins a free kick in the defensive half.
Foul by Cristian Zapata (Colombia).
Corner,  Colombia. Conceded by Fred.
Substitution, Brazil. Ramires replaces Hulk.
Corner,  Colombia. Conceded by Thiago Silva.
Offside, Colombia. James Rodríguez tries a through ball, but Carlos Bacca is caught offside.
Corner,  Colombia. Conceded by Maicon.
Substitution, Colombia. Juan Quintero replaces Juan Guillermo Cuadrado.
Goal!  Brazil 2, Colombia 1. James Rodríguez (Colombia) converts the penalty with a left footed shot to the bottom left corner.
Julio César (Brazil) is shown the yellow card for a bad foul.
Penalty conceded by Julio César (Brazil) after a foul in the penalty area.
Penalty Colombia. Carlos Bacca draws a foul in the penalty area.
Thiago Silva (Brazil) wins a free kick in the defensive half.
Foul by Carlos Bacca (Colombia).
Attempt saved. Juan Guillermo Cuadrado (Colombia) right footed shot from outside the box is saved in the bottom right corner. Assisted by Pablo Armero.
Foul by Paulinho (Brazil).
Fredy Guarín (Colombia) wins a free kick in the defensive half.
Foul by Hulk (Brazil).
Brazil secured a World Cup semi-final against Germany with victory over Colombia on a night of gripping tension and passion in Fortaleza.