I think Team Fortress 2 straddles the line between a traditional First-Person Shooter (FPS) and the League-of-Legends-style Multiplayer Online Battle Arena (MOBA) genre (which came to prominence later), while Overwatch goes deep into MOBA territory to its own detriment.
Every character in Overwatch is meant to be highly distinct, with their own weapons, special abilities and a strong "ultimate" ability which must be charged before use. This leads to visual clutter, lack of baseline expectations, and poor dramatic tension.
I enjoyed playing Overwatch, but found Overwatch League (the professional broadcast series of Overwatch matches) to be borderline un-watchable. The special abilities on every character evidently need to feel "epic" which requires lots of special effects. Combined with many characters in a single fight, this leads to a lot of visual clutter. In contrast, Team Fortress 2 mostly has bullet attacks that produce little visual clutter. The only strong form of visual clutter is a flamethrower which is used as a disorienting short-range ambush weapon. Watching TF2 Highlander (a 9 versus 9 competitive format) I have a much clearer idea what is happening than Overwatch's 6 versus 6 team format. While the plentiful visual effects work reasonably well in MOBAs (which have an isometric or overhead camera), they combine poorly with the chaotic world of First-Person Shooters.
The special abilities and unique heroes of Overwatch also make it difficult to form a reliable expectation of what any given character can do. Team Fortress 2 has a clear baseline for health, speed, attack and support ability, roughly at the Pyro class. Deficits in one area generally coincide with strengths in another. While Overwatch has a roughly standard health level for small, light classes everything else varies wildly. In particular, tank classes (with high health and defensive abilities) enjoyed reasonable speed, attack and support abilities leading to the infamous "Goats comp" of all tank and support classes. This composition took over competitive play and caused Overwatch developers to update the game to artificially force teams to pick damage-dealing heroes. While Team Fortress 2 competitive leagues limit the number of players who can play the healing or area damage classes, all 9 classes have consistently seen play. The issue here is not merely balance, but rather that TF2 characters conform to a rough baseline. 4 of 9 classes in TF2 have access to the exact same shotgun, and a 5th has a similar weapon. Almost all strong weapons are tuned to output damage roughly in line with this shotgun. Overwatch has no such commonalities or baseline. It feels like TF2 took a generic character and generated 9 interesting permutations, while Overwatch created about 30 interesting characters from scratch. The result is more variety, but also less coherence.
Team Fortress 2 only has an ultimate ability on one class in the base game; the healing class can grant a few seconds of invincibility. While some ultimate-type abilities have been introduced over the years, these generally are less impactful than the Medic ultimate and require much greater tradeoffs. The flow of every match of TF2 is shaped by Medic ultimate abilities while other ultimate-type abilities are rarely so impactful. This creates excellent dramatic tension, as the whole team coordinates around a single moment where the peak of their team's capacity to win is unleashed. In Overwatch every character has their own ultimate ability and many of the "mere" special abilities are also quite impactful. Thus every fight presents a random selection of powerful abilities rather than clearly defined moments of higher and lesser tension.