You have to teach him to back off and respect you. It's hard, I won't lie. You have to create a line between him and you with the food. I used to ride an old show horse who didn't start eating until you left his stall and if you came back in, he stopped and backed up. I thought that was the coolest and most gentlemanly thing ever and I have had horses do that ever since.
Start with a halter a lead and another person if possible. Have the other person put the food in a bucket on the ground or some hay. Make him stand. The second he takes one step forward, he has to back up and fast. From there, make him stand. You want to show him that he can't eat until you say it's ok. Just because food is there, doesn't mean it's feeding time. Don't make him stand too long at first because that's just torturing him, but be firm. Lead him slowly to the food and if he tries to rush, go back again.
With some horses, I will stand next to them when they eat. I hold a crop as an extension of my hand and everytime they pin their ears or try to kick or bite me, I make them back up again. This is what the lead stud and the lead mare in a herd do. If they don't like the way another is behaving, they don't let them have it.
Sorry for such a long post, I hope it helps.
P.s. Try to limit hand feeding, it can encourage rushing.