Federal police confirmed to ABC News that a 40-year-old suspect in the attack that occurred in Juiz de Fora, about 125 miles north of Rio de Janeiro, had been detained.
Bolsonaro, knows as "The Brazilian Trump," was being carried on the shoulders of a supporter when he was attacked, authorities said.
Flavio Bolsonaro, Jair's son and also a politician, said via Twitter than the stabbing had pierced his father's liver, lung and intestinal tract.
After about two hours of surgery, Jair Bolsonaro was transferred to an intensive care unit where he was last reported in stable condition. On Friday, he was transferred to the Albert Einstein Israelite Hospital in Sao Paulo, Brazil, and his spokesperson said his condition remained stable.
Bolsonaro, 63, is a former Army captain supported by millions of evangelical Christians because he is pro-guns and anti-LGBTQ. He also has been accused of making racist comments and inciting hatred and currently is under investigation for recent remarks about Afro-Brazilians.
He is used to controversy. In 2011, he told Playboy magazine that he would be "incapable of loving a gay son" and that he'd prefer such a child of his "to die in an accident."