"The soldiers neutralised an individual", Belgian emergency authorities said on Twitter.
Prosecutors issued a statement that the attacker "is a 30-year-old man who is not known for terrorist activities".
"We do consider it a terror attack", Natus said. The attacker is in a critical state in hospital. One was cut in the face, while the other suffered an injury to the hand.
Prime Minister Charles Michel tweeted late Friday: "All support for our military. We are following the situation closely".
Images showed police have sealed off a main street near the main Grand Place tourist attraction.
The force said the man was stopped outside the royal grounds.
The assailant yelled "Allahu akbar" (God is great) while pulling a knife on the soldiers who were on patrol in the center of the capital, the spokeswoman said. "The police said he had been shot by soldiers", said Thomas da Silva Rosa, a public affairs consultant.
Suicide bombers killed 32 people in attacks on the city's main airport and subway system on 22 March, 2016.
Large numbers of police officers were deployed to the scene, which was cordoned off.