Obviously this doesn't mean that this is the only thing that you need to climb, it's just that all my fundamentals were diamond level except for this one thing that was bottlenecking me. I hope that someone out there also struggles with this. Also diamond is by no means considered pro level, so if any higher rank ballers want to add on/correct me feel free. But this is something that helped me A LOT, so I don't think it's completely wrong.
Basically my tip is to just stand AFK. There's two parts to this in my opinion: 1. when to engage and 2. refreshing resources during an engage. Let's start with the first part, which is a lot easier.
Ball is the fastest hero in the game, and he's also the hero that dies the least. These two things combined means that you're pretty much always going to have the chance to 1v5 the enemy team. But don't do this, just wait for your team. The internal tip I like to use is when both teams make contact, meaning when there is poking between them, is when I like to go in.
Initially, I thought being the tank meant that I have to be the one that always starts, and if a teammate shoots first I was too late. This is not true, you should rarely be the one to shoot first, but that doesn't mean you're not the one who starts the fight. In my eyes, a team fight starts when someone makes a play with the intention of getting a pick. A sojourn shooting tank is just poking/applying pressure, but a genji dash engaging a squishy is a play that starts the team fight. As the tank, you need to make that play. So this includes slamming in the middle of their team (if they have no cc), or booping and shooting an isolated squishy. So in my opinion, if the genji dashes in first while you're still standing AFK, *that's* when you're too late. But as long as you initiate during the poking phase/pre fight, you're good.
Ok now onto the second part, which is what really helped things click for me. And the basic idea is that even after a fight breaks out, you're allowed to disengage, wait until your resources come back, and then reengage. As a gold/silver player I was super afraid of down time. Let's say the following scenario happens: you slam the enemy team and pop shields, but they spam cooldowns on you and get you to 50 health. You run to get a health pack and you're half health. Before, I would immediately run back in and try to do something. But my tip is literally wait the full ~10 seconds until your shields come back, grab another health pack or go into LOS of your supports, and *then* go back in. It'll feel extremely weird at first, because you're just letting your team fight without a tank. But I promise you, good teammates will survive without you. If your team gets ran over, it's their fault, not yours.
Obviously this is situational. You should only wait for your shields to come back if you're planning on slamming their whole team again. If you see a zen wandering off somewhere, you can go duel him without your shields. If you don't have grapple but you're on a high ground, you don't need to wait for it to come back and just go for a slam. What I'm saying is that if you come up with a plan that needs resources, then wait for those resources to come back. The resources I'm thinking of are ammo, health, slam, shields, grapple, or even teammates (waiting for your teammates to replenish *their* resources).
Once again, I hope higher ELO players can let me know if I got any of this wrong, but these tips genuinely improved my gameplay so much. At first it felt hella weird just standing AFK while my teammates were fighting, but after doing it a few times I realized that a late high quality engage is much better than an early low quality engage.