After Patrick Mullins put Toronto ahead in the 81st minute, Haakenson equalized for Nashville just two minutes later. The second-year midfielder then solidified his hero status two minutes into stoppage time.
Daniel Lovitz carried the ball downfield for Nashville and sent a tremendous pass to Haakenson in front, where he buried the shot for the go-ahead goal.
Toronto also led after Jonathan Osorio's goal in the 26th minute, but Nashville equalized thanks to another first-time scorer in Jack Maher.
In the 62nd minute, Maher redirected a Hany Mukhtar corner. The second overall pick of the 2020 MLS SuperDraft, Maher was playing his first game of the season and just the fourth game of his young pro career.
Maher received the start in place of Walker Zimmerman (abdominal injury) on the back line.
It was another stirring comeback for Nashville. The club has trailed in five different games this season but only lost one of those contests.
Toronto, meanwhile, absorbed another tough loss to drop to 0-4-0 in its last four games. It is Toronto's first four-game losing streak since the 2015 season.
Nashville had an 11-4 advantage over Toronto in shots on goal, but Toronto goalkeeper Quentin Westberg made eight saves to keep his team afloat. Mukhtar was twice denied by Westberg on great chances -- first on a close-range header in first-half stoppage time and then a wide-open breakaway opportunity in the 71st minute.
Osorio already has three goals, despite playing in only four of Toronto's nine games due to injury and suspension.
Mullins scored his first goal of the season just two minutes after entering the game as a substitute.