V.W.
Here is what stands out to me about your post:
"My son would sleep when he was a little ... I have not been able to get him to go to bed at a decent time without putting up with one heck of a fight from him."
Of course he is going to put up a fight. He doesn't want to go to sleep. And he has learned that if he fights you won't make him, apparently.
Read some sleep training books and develop a plan and stick to it. Trying something one night, or even two, isn't going to "fix" it. You have to decide to work the plan and then DO so. And that means more than just a couple of nights in most cases.
You said you don't believe in letting him sit in there and cry for an hour. Well, I don't know any actual sleep training books that suggest doing that. Everything I have ever READ says that you go in and check on them at intervals, you just don't get them up or pick them up or give them a bottle. You do NOT just ignore them the entire time. Did you read that somewhere or was that just what you thought "cry it out" meant? Because it isn't what it means.
The method I used (Ferber) suggests not to leave them un-checked on for more than (I think) 15-20 minutes. It's been a decade since I've used it so I can't remember exactly. You start checking on them after 5 minutes. Then the next check you wait until 10 minutes. Then the next check you wait until 15 minutes, but you never go past that. You just continue to check approx every 15 minutes until they are asleep.
It would seem to me that he needs to go to bed earlier and that a lack of sleep is making him overtired and therefore more awake.
You also mention that even when he doesn't sleep well you have him up at 9 a.m. What time does he get up when he has slept appropriately (or as close to appropriately as he gets)? My kids never slept past about 7:30. EVER. Well, until my son was about 9 yrs old. If you prefer them sleeping later, fine, but realize that that may be having an effect on how late he goes to sleep at night also.
My kids (at age one) were in bed by 7:30 pm. And slept all night.
Get a good sleep routine (PJ's, teeth brushing, goodnight kisses, story in the rocking chair, prayers, lights out) and do it EVERY.SINGLE.NIGHT. Then put him to bed (and use Ferber's method checking at intervals).
Yes, he will fuss. Yes, he will probably scream (it has worked for him in the past...). It may take a week of this. It may take 10 days. For us, it took 3 nights, but there was no pattern of letting them stay up until 2-3 a.m. in place already.
Good luck. And don't give in. But have a PLAN, not just winging it every night.