Try rock/hold him to sleep for a shorter period of time... NOT until he falls asleep...
don't stay in the room until he is out... rock/hold him, put him in his crib, say night-night, then walk out and close the door.
Give him a "lovey" to sleep with. Put some baby safe stuffed toys in his crib with him. Use the Fisher Price "Ocean Wonders" crib toy... at this age, you CAN have other things in his crib with him....to entertain himself and help him to sleep. That is what I did with both my kids. It helps.
Main thing is to have ROUTINE and consistency AND even having a pre-bed/pre-nap routine.
What I found to be important, it to also verbally tell the child what is coming up... and "explaining"...ie: in 5 minutes its bedtime... or as I tell my kids "Okay let's start our routine... you can finish what you are playing, then lets go..." And we ALWAYS go to the same room to wind-down first... then my son likes for me to read to him or watch his Little Bear video... I give him some milk, change his diaper, I let him unwind. Then in tandem with that I give him a head's up.... "after this its sleep time..." then we put on pajamas and he now walks into his room and I put him in the crib and I walk out and close the door. Meanwhile, he will play around a little in his crib or talk to himself, then he falls asleep on his own.
He also has a lovey that he sleeps with.
But the key is, I always do the SAME pre-nap/pre-bed routine with my kids. So, there is less protesting, and they do it on auto-pilot now.
BUT, it takes time and consistency, each day. But in turn, the child learns the routine and it becomes a "habit." AND they know what to expect, just by you saying verbally to them "okay, lets get ready, bed time soon...." or "nap time soon..."
Kids NEED to be "cued" as to what is happening. With your son, as you rock/hold him... just calmly tell him "after Mommy rocks you, you go in your crib, bedtime..." Then give him a couple minutes more of rocking... then lay him down. Tuck him in, say good night, then walk out.
With any 'transition' or habit, it takes time... but once they get used to a routine... they will be fine.
I didn't let my kids cry it out. But if after a few minutes I knew they would not fall asleep, then I would go in and take them out and say "okay, but in 10 minutes you go back to bed..." and I would do the routine again. But I didn't have to do it that much.
My daughter was much harder... and with her, being my first child, I co-slept with her or when my kids were sick. But I always got them back to a routine. Which they knew.
Now, my kids sleep on their own... but at night ONLY.... if they have trouble sleeping or are sick, or any developmental quirks, then we co-sleep.
I find that verbal cues and having the same pre-nap/pre-bed routine is most helpful.
Both my kids now, nap and sleep with no problem. And I don't have to nag them about it or fight with them about it and they don't protest. But you have to be consistent. Each day.