France has stepped up security. President Francois Hollande has held a cabinet meeting to discuss the Belgian explosions. There is also extra security at Dutch airports.
Some reports say at least one of the explosions at Zaventem was close to the American Airlines check-in area but this has not been confirmed.
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."
There are few details yet about the metro blast, but there are some reports of casualties.
It occurred shortly after 08:00 GMT during the rush hour at Maelbeek station, with TV images showing smoke billowing from the entrance.
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."
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.