Toronto (1-2-1, 4 points) was off to its worst start through three games since losing the first nine matches of 2012, but its longtime standouts Bradley and Altidore stepped up.
Columbus (1-1-2, 5 points) got three saves from Eloy Room.
Bradley took advantage of poor defending off a corner kick to his first goal of the season and 13th in 209 MLS games.
The Crew had four chances to clear the ball from danger but each time it either was badly hit or went off a Toronto player until Bradley gathered the ball and ripped a shot to the lower left corner.
It was his first goal since Sept. 7, 2019, vs. FC Cincinnati.
Columbus tried to respond three minutes later when Lucas Zelarayan sent Gyasi Zardes free, but Bono made the save.
It was Toronto's turn to be denied in the 26th minute. Nick DeLeon struck the crossbar and the rebound went to Yeferson Soteldo. He teed the ball for a shot toward the left post but Saad Abdul-Salaam made a sliding block.
Toronto missed another opportunity in the 53rd as Crew defender Darlington Nagbe headed an attempt by Omar Gonzalez off the goal line.
Altidore entered in the 62nd minute and the United States men's national team forward nearly doubled the lead in the 75th with a strike that hit the bar.
He scored the insurance goal from another restart. Bradley sent a ball to the right post where Gonzalez headed it to Altidore for his first goal of the season and 73rd in 169 games.
Toronto plays at New York City FC on Saturday. The Crew are at New England on Sunday in a rematch of the 2020 Eastern Conference Final won by Columbus, 1-0.