The answer may well be "well you should just sit by his cot for an hour to reassure him", but as I mentioned above this actually has limited effect on him!
The only read on its having no effect is because you aren't giving him the level.of reassurance he needs. As soon as you start giving it consistantly, the sitying by the cot will (a) work, and (b) shouldn't take long - 10 or so minutes , and (c) you can start withdrawing the amount of reassurance needed.
This phase begins and ends with trust. It's all about trust.
If your son knows that he can hold you hand whenever he needs to at sleep time, for as long as he needs it. That your hand will always be there. That you won't sneek your hand away or (worse still) sneek out as soon as he relaxes - then there is no battle.
If you create a battle by not giving him the reassurance, it means he learns that the only way he has to get your comforting reassurance is to cry if uou leave. So he'll fight to stay awake, for fear that as soon as he looks like he might relax enough to sleep, you leave him. So his effort goes into staying awake to keep you there.
Give the constant reassurance, the battle stops.
If he trusts you to stay, he will be able to relax and learn to go to sleep contented in his cot, safe in the knowledge that he can relax and be calm and you will still stay until he is asleep.
So, start point is rebuilding that trust. Hold his hand (or whatever) without moving or looking to remove the hand until he is fully asleep. Give this long enough so the trust builds and the battle stops.
Once he's going to sleep within 5-15 minutes, he's stopped the battle to stay awake and trusts you to stay. Then you start withdrawing. So start letting go of his hand when calm, but stay right there next to the cot with constant eye contact. If distressed, hand back. Once calm, lift hand but stay watching. Hand back if upset, let ho when calm. Stay until fully asleep.
Always stay until asleep. The trust is destroyed and you'll end up with backwards steps any time he doesn't trust you to give him enough reassurance for long enough.
Next calm with your hand and when calm stand and turn side-on to him, without eye contact. Stay right there until asleep. If distressed, turn back to him and hold hands. Turn away when calm.
Next, once this is accepted and trusted, take a step away when calm. Return immediately if upset, withdraw when calm. Stay until asleep.
Then wait by door. Return immediately if needed, withdraw when calm. Stay until asleep.
Then stay upstairs while going to sleep. Return immediately to his side if needed (to she you are right there, keeping the trust), withdraw when calm.
It's all about trust.
The fact you left him to cry with controlled crying will have destroyed a lot of trust that you will be there for him. But it's easy to rebuild that trust. It will take some effort though.