Shortly after the airport blasts on Tuesday morning, an explosion also struck the Maelbeek metro station in the centre of the Belgian capital, killing 15 people, the city transport authority said. The station is close to European Union institutions.
The Belgian federal prosecutor told state media that one of the explosions at the airport was "probably" a suicide attack.
Footage from the airport - the country's largest - showed people running from the terminal building as plumes of smoke rose to the sky.
The powerful blasts caused parts of the ceiling to fall down and windows were shattered.
All metro lines were shut down after the attacks. Witnesses at the Maelbeek station said people with blood on their faces were seen at the scene.
Ian McCafferty, a witness at the station, said the blast happened during busy rush hour traffic.
"People started running when they saw smoke coming," he said. "The point of these attacks is to make you live in fear, but I refuse to."
The interior ministry raised the country's terror alert to the highest level after the blasts and Brussels' crisis centre told people: "Stay where you are".
House searches were carried out in the region around Brussels after the attacks, public broadcaster RTBF said on Twitter.
The interior minister said 600 additional police had been deployed.
Reuters news agency said shots were fired before the explosions at the airport.
"When I heard the first explosion, lots of people started screaming and running," Tom, an intern working at the airport, told Al Jazeera.
"When I heard the second explosion, which was about 30 seconds after the first one, everything got chaotic. I could see panic on everyone’s face, blood on their bodies."
After clearing the area of passengers, police brought in sniffer dogs to search the area. Unconfirmed media reports said weapons were found inside the airport.
Belgian Prime Minister Charles Michel called for unity as details were still emerging about the attacks.
"We are facing a difficult, challenging time and we should face up to this challenge by being united," he said.
“What we feared has happened, we were hit by blind attacks."
The country had been on high alert since the arrest in Brussels last week of Salah Abdeslam , a key suspect in last November's Paris attacks that left 130 people dead.
Belgium's Interior Minister Jan Jambon said on Monday the country was aware of the risk of a possible revenge attack following the capture of the 26-year-old.
"We know that stopping one cell can ... push others into action. We are aware of it in this case," he told public radio.
Governments in Europe and beyond quickly responded to the Brussels attacks, calling emergency national security meetings and stepping up controls at airports and other sensitive sites.
Dutch Prime Minister Mark Rutte said his country would increase border patrols at the Dutch-Belgian borders and boost security.
France also announced increased security measures, with President Francois Hollande saying, "We are faced with a global threat ... The war against terrorism must be conducted across Europe."
Follow updates from our correspondents around Europe live:
Source: Al Jazeera