I've been through this with DD2 and now age three she is eating an almost normal diet.
Trying to force him to eat won't work. He will always 'win' if you turn it into a battle.
We looked at her best meal - breakfast - and aimed to get as much good food as possible into her then - cornflakes with full fat milk, egg and soldiers (she would only eat the yolk spread on toast) more buttered toast and jam, apple or banana.
Doing this gave me confidence that at least she was getting fat and protein and vits once a day.
Mid-morning I gave her anything that would build her appetite - and that included cheese pies from Greggs/Waitrose good quality sausage rolls, frubes, cheese and crackers, croissants, bananas,houmous etc
Lunch in front of telly and then a good run in the park in the afternoon to sharpen her appetite for dinner (which invariably was a disaster)
After getting angry a few times DP and I agreed that we would put her dinner out and make her sit down but would not make a fuss if she didn't eat.
If hungry later, I would offer the same meal again, calmly. There was a vitamin sweetie next to her plate to bribe her into having a few mouthfuls.
She is much better now and has built up an appetite so is much less inclined to leave her dinner.
She is also eating peas, carrots, tomatoes and loads of fruit.
So - don't get angry, give him some fattening/protein rich snacks earlier in the day so that you don't feel too concerned about his weight and make sure he gets plenty of exercise.
good luck