Twin blasts hit Zaventem airport at about 07:00 GMT, killing 11 people.
Another explosion struck Maelbeek metro station near the EU’s headquarters an hour later, leaving a further 20 people dead.
The Islamic State (IS) group said it was behind the attacks in a statement issued on the IS-linked Amaq agency.
The bombings come four days after Salah Abdeslam, the main fugitive in the Paris attacks, was seized in Brussels.
Belgium has raised its terrorism alert to its highest level. Three days of national mourning have been declared.
Prime Minister Charles Michel called the latest attacks “blind, violent and cowardly”, adding: “This is a day of tragedy, a black day… I would like to call on everyone to show calmness and solidarity”.
European Council President Donald Tusk said: “These attacks mark another low by the terrorists in the service of hatred and violence.”
US President Barack Obama called the blasts “outrageous attacks against innocent people”.
The airport and the entire public transport system in Brussels are closed, although some train stations are due to reopen shortly.