Brazil coach Tite said defeat to Belgium was "very hard for us to swallow" after the Red Devils ended Brazil's hopes of a record sixth World Cup crown.
Belgium poured forward in a superb first-half performance that produced a Fernandinho own goal before a superb Kevin De Bruyne strike had Neymar and his teammates rocking.
Although Brazil roared back in the second half with a headed goal from Renato Augusto, Belgium hung on for a famous 2-1 win that puts them into a semi-final against France in Saint Petersburg on Tuesday.
"It's a heavy, bitter feeling. This was very hard for us to swallow," Tite said.
Unbeaten in their last 15 games, Brazil's bid for a second consecutive place in the semi-finals looked in safe hands.
But after Thiago Silva came close and Neymar showed early promise, Brazil heads went down following Fernandinho's own goal before De Bruyne's superb strike from distance put the Red Devils in control on 31 minutes.
Late changes by Tite paid off as Renato Augusto's superb header 14 minutes from time dragged the south Americans back into contention.
But as Belgium tired, Brazil spurned several clear chances to push the match into extra-time, Augusto drilling wide and Coutinho skewing his effort off target from Neymar's pass.
Courtois produced a great save in the dying minutes, tipping over a curling drive from Neymar as the Belgians ensured they will make just their second visit to the last four, 32 years after the finals in Mexico.
"I'm the proudest man on earth now because I gave a very difficult assignment to the players and the way they responded -- they believed till the last minute was amazing," said Belgium coach Roberto Martinez.
- Red surge -
On eight minutes Courtois was flapping when Neymar's corner was flicked on by Joao Miranda, came off the thigh of Thiago Silva and then off the post.
Tite had replaced suspended holding midfielder Casemiro with Fernandinho in his starting line-up, handing the Manchester City player his first World Cup start since he was hauled off at half-time on Brazil's way to the humiliating 7-1 semi-final defeat to Germany in 2014.
But Fernandinho's World Cup woes continued, Hazard's corner coming off the midfielder's arm to glide past Alisson and into the net.
Brazil almost equalised immediately, Neymar dribbling down the left and finding Gabriel, only for his effort to go amiss.
But Hazard and De Bruyne were linking incisively to carve open the Selecao's well-oiled defence with surprising ease and when Belgium countered on the half hour, it was with devastating effect.
Lukaku looked invincible as he powered through Brazil's midfield before finding De Bruyne in space on the right.
The Manchester City ace had time to pick his spot before unleashing a right-footed drive that screamed past Alisson and inside the 'keeper's far post.
Tite replaced the ineffective Willian with Roberto Firmino at half-time and soon after changed Jesus for Douglas Costa.
But it took the arrival of China-based Augusto 17 minutes from time that sparked Brazil into life.
Brazil saw two penalty claims in quick succession waved away by Serbian referee Milorad Mazic after Neymar tumbled following contact with Fellaini and Gabriel went to ground after a challenge from Vincent Kompany.
De Bruyne released Hazard down the left but he firing narrowly wide of Alisson's far post as Lukaku waited to pounce.
Minutes later Augusto hung in the air to meet Coutinho's cross and direct it past Courtois to raise Brazilian hopes.
But Augusto drilled inches wide minutes later, one of several misses that Brazil were made to regret.
The pain was too much for Neymar who was in tears at the end.