Twin blasts hit Zaventem airport at 07:00 GMT, killing 11 and injuring 81, Belgium's health minister said.
Another explosion struck Maelbeek metro station an hour later. The Brussels mayor said at least 20 people were killed, according to Belgian media.
Belgium has now raised its terrorism threat to its highest level.
The attacks come four days after Salah Abdeslam, the main fugitive in the Paris attacks, was seized in Brussels.
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."
The airport and the entire public transport system in Brussels are closed.
Two blasts tore through the departures area of Zaventem airport shortly after 08:00 local time (07:00 GMT).
The Belgian prosecutor said "probably a suicide bomber" was involved.
The state-owned Belga news agency reports that shots were fired and shouts in Arabic were heard before the two explosions.
Public broadcaster VRT said an assault rifle was found next to a dead attacker. Private broadcaster VTM added that an unexploded bomb belt had been found. Reports say it will be detonated safely soon.
Zach Mouzoun, arriving on a flight from Geneva, told France's BFM television: "It was atrocious. The ceilings collapsed. There was blood everywhere, injured people, bags everywhere. We were walking in the debris. It was a war scene."
All flights have been diverted. Eurostar has cancelled all trains to and from Brussels. The Thalys France-Benelux train operator says the entire network is closed.
Security has been stepped up at Gatwick and Heathrow airports and the UK Foreign Office has advised British nationals to avoid crowded areas in Belgium. UK PM David Cameron chaired a meeting of the Cobra response committee on Tuesday.
France has stepped up security, and the cabinet has held an emergency meeting.
"The terrorists have struck Belgium but it is Europe that was targeted. And it is the whole world that is concerned with this," said French President Francois Hollande.
There is also extra security at Dutch airports.
The metro blast occurred shortly after 08:00 GMT during the rush hour at Maelbeek station.
It struck the middle carriage of a three-carriage train while it was moving away from the platform.
Alexandre Brans told AP: "The metro was leaving Maelbeek station when there was a really loud explosion. It was panic everywhere. There were a lot of people in the metro."
As well as those killed, Brussels mayor Yvan Mayeur said more than 100 people had been injured, 17 of them severely, VRT reported.
The station is close to EU institutions. The European Commission, the EU's executive arm, has told employees to stay indoors or at home. All meetings at EU institutions have been cancelled.
Ryan McGhee, a catering worker at a college in Brussels, told the BBC: "The entire city is in lockdown. People are calm at the moment but the atmosphere is tense."
Belgium's Interior Minister Jan Jambon had said on Monday that the country was on the highest level of alert for possible revenge attacks after the capture of Salah Abdeslam.
He told Belgian radio: "We know that stopping one cell can... push others into action. We are aware of it in this case."
Zaventem airport is 11km (7 miles) north-east of Brussels and dealt with more than 23 million passengers last year.
Follow us on our social media channels:
If you have anything you want to share with us, send us an e-mail at [email protected]!
Want to send a tip? Drop us an e-mail at [email protected], anonymity is guaranteed!
You have successfully registered your account!Please confirm your e-mail address by clicking on the URL sent to you.The e-mail usually arrives in 5-10 minutes.
How ajeeb was that!? Thanks for contributing to our community! Your post will appear after we take a quick look!