Red with meat and white with fish is a rule of thumb built from a real observation and then over-extended. It works often enough to survive and fails often enough to frustrate. The underlying principles are simpler and they explain both the successes and the failures.
Match weight before anything else
This is the one principle that does most of the work. A delicate dish is flattened by a heavy wine, and a rich dish makes a light wine taste watery. Sole and Barossa shiraz fails. Sole and Muscadet works. Beef short rib and Beaujolais fails; beef short rib and Barolo works.
The old rule works because fish is usually lighter than red meat, not because of any chemistry between fish and white wine. Grilled tuna with pinot noir is excellent, and it breaks the rule while obeying the principle.
Acidity is the most useful tool you have
Acidity cuts fat and resets the palate, which is why a high-acid wine makes rich food taste lighter and keeps a meal moving. It is the reason Italian reds, which are almost all high in acid, work so well with food that would defeat a softer wine.
Acidity also has to be matched. A dish with a sharp dressing, a squeeze of lemon or a vinegar-based sauce will strip the acidity out of a soft wine and leave it tasting flat and sweet. Against an acidic dish, choose an acidic wine.
Sweetness must lead
A wine must be at least as sweet as the dish, or it will taste sour and thin. This is the most common failure with dessert: a dry sparkling wine with a wedding cake tastes like a mistake, and a Sauternes tastes like a plan.
The same principle explains why off-dry riesling works so well with spicy food. Sweetness soothes chilli heat, and the wine's acidity keeps it from cloying. A tannic red does the opposite: alcohol and tannin both amplify capsaicin burn.
The three difficult ingredients
Artichoke contains cynarin, which makes whatever you drink next taste sweet. It is not imagination and it is not fixable. High-acid, neutral whites cope best: grüner veltliner, Muscadet, dry sherry.
Asparagus contains sulphur compounds that clash with most wine and turn many reds metallic. Sauvignon blanc works because its own green, pyrazine-driven character meets the vegetable halfway.
Eggs coat the palate and dull almost everything. Sparkling wine cuts through, which is a genuine reason for the champagne and brunch convention rather than only an excuse.
Two patterns that rarely fail
Match the region. Food and wine that grew up in the same place have had centuries to adapt to each other. Sancerre with goat cheese from the same valley, Chianti with a Tuscan ragù, albariño with Galician shellfish, Barolo with braised beef and white truffle. This is not mysticism; it is a long, slow selection process.
Match bubbles with salt and fat. Sparkling wine's acidity and carbon dioxide scrub the palate, which is why it works with fried food, crisps, salty cheese and almost anything greasy. It is the most flexible thing on any wine list and the least often ordered with a meal.
When there is no obvious answer
For a table with several different dishes, stop looking for a match and pick a wine that gets in nobody's way: an off-dry riesling, a dry rosé, a light red served cool, or traditional-method sparkling. All four have acidity, moderate alcohol and no aggressive tannin, which is the profile that survives contact with anything.