Dogs pull because pulling works: it gets them where they want to go, faster. The whole fix is making pulling stop working - consistently, on every walk, by every person who holds the leash.
Step 1: stop being a sled
The moment the leash goes tight, stop walking. No yank, no shout - just become a tree. The instant the leash slackens (even by accident), walk on. The dog learns: tight leash = world stops, loose leash = world moves.
Step 2: pay the position
Carry small treats. Every time the dog happens to walk beside your leg, mark it ("yes") and pay. You are turning your side into the most profitable place on the street.
Step 3: change direction
Unpredictable turns keep the dog's attention on you instead of the horizon. Three or four calm direction changes per walk teach the dog to track where you are going.
Gear that helps (and what it will not do)
A front-clip no-pull harness reduces the force and turns surges aside - it makes training physically manageable with a strong dog. But no equipment replaces the consistency above; the harness manages pulling, training removes it.
Expect weeks, not days
Pulling was rewarded for months, so unlearning takes repetitions. Short frequent walks beat one long frustrating one.
If you need mechanical help while you train, see our no-pull and front-clip harnesses; for training sessions a simple fixed-length leash works far better than a retractable.