I know how you feel, as my daughter decided to stop taking naps when she was 2 1/2. I knew she still needed the nap because she would get cranky/tired by dinner time, just like you said. With her, I made a strict routine of what time she would eat lunch, and then lay her down. Sometimes she fell asleep, but if she wasn't giving in, I would let her watch a movie as long as she continued to lay down (for some quiet time.) But since you said your son just turned 2, I would be more firm about the nap time. You should stay in the room and repeatedly lay him back down when he tries to get up. Don't try to reason with him, just say "it's time to sleep" or "nighty night" short phrases to make it clear. Don't show emotion in your voice, like you're mad or stressed, just keep laying him down and stay where you can see him, but don't look into his eyes. Once he realizes he's not going to "win the battle" or change your mind, he'll give up and take his much-needed nap. The first couple of times you do this will probably be rough, but stick with it!
If all else fails, I don't think laying by him is horrible. I would lay with my boys when they were young and usually fall asleep with them. And my daughter, who is 3 1/2 now, does like your son in the morning...gets up real early, and asks me to lay by her. I always agree, because she immediately goes back to sleep. :)
They grow SO fast; cherish the cuddle time you get! (my oldest is 11 now!)