Beef is the French half of one of English's most famous pairs. It came in around 1300 from Old French buef, "ox, beef, ox hide," from Latin bovem, "ox, cow" — the same root that gives bovine. The native word for the animal, cow, stayed exactly where it was. English ended up with a Germanic word for the beast in the field and a French word for the meat on the table, and the same split runs through pig and pork, sheep and mutton, calf and veal.
The usual explanation is social: after the Conquest the people raising the animals spoke English and the people eating them spoke French. It is tidier than the truth — beef originally meant the live ox as well, and the animal sense had its own plural, beeves — but the pattern is real, and it is one of the clearest fossils of the Norman period in everyday vocabulary. The modern slang senses are unrelated and American: a complaint by the 1880s, an argument by the 1930s.
beef (n.) c. 1300, "an ox, bull, or cow," also the flesh of one when killed, used as food, from Old French buef "ox; beef; ox hide" (11c., Modern French boeuf ), from Latin bovem (nominative bos , genitive bovis ) "ox, cow," from PIE root *gwou- "ox, bull, cow." The original plural in the animal sense was beeves . also from c. 1300 beef (v.) "to complain," slang, 1888, American English, from noun meaning "complaint" (1880s). The noun meaning "argument" is recorded from 1930s. The origin and signification of these are unclear; perhaps they trace to the common late 19c. complaint of soldiers about the quantity or quality of beef rations. also from 1888