This happened on the last flight my roommate was on, shortly after Christmas. Not to him but to another passenger. Person in 1st class orders something, person in the exit row seat directly behind first class began muttering things. Didn't say anything directly to Passenger A, but was saying things like drinking was immoral, getting drunk in public was rude, et cetera. Passenger A didn't say anything to passenger B, but did flag down a passing attendant and quietly explained what was happening. The attendant went back to speak to Passenger B. There was a brief flurry of raised voices which died down as soon as the FA said, "Sir, if you do not calm down and stop bothering the other passengers, we will have you detained when we reach our destination for disrupting the flight. Nobody will enjoy that, including you. I realize you are allowed to have your opinions, but keep them to yourself and there won't be any more problems." Roommate reported perfect silence from Passenger B the rest of the flight.
As to what you can do: you could say, "Is there some medical reason why I shouldn't eat/drink this?" In case there's some allergy or 'airsickness' situation in the offing. If the answer is negative to these, you can say, "I see," and then turn back to whatever you were doing and ignore them. If the person keeps it up, notify the attendants, this falls into the region of 'their job.' Either ask to have the other person moved, or to switch seats yourself if things are that bad. Of course I'm slightly spoiled by the fact that I'm deaf and if I don't want to hear someone's BS, I don't have to