Il y a une règle ; lorsque le plat est constitué essentiellement de l'ingrédient nommé on utilise « de » ;
soupe de poisson, soupe de légumes, soupe de poireaux, salade de pommes de terre, salade de laitue, rôti de bœuf, …
Lorsque l'ingrédient nommé n'entre dans le plat que comme un ingrédient supplémentaire, alors on utilise « au » ou « à la » si l'ingrédient est du féminin et qu'il ne constitue qu'un élément dans le plat (tarte aux fraises : il faut de nombreuses fraises; tarte à la crème : il n'y a qu'une crème; canard à l'orange : il s'agit de l'arome) ; donc on doit dire comme ci-dessous;
couscous au poulet, couscous au mouton, couscous au bœuf (parce que l'ingrédient essentiel dans le couscous consiste des grains de couscous et des légumes et que la viande ne « définit » pas le plat)
tarte aux fraises, tarte aux quetsches, coq au vin, gâteau à la crème, dinde aux marrons, spaghettis à la sauce tomate, salade aux lardons, salade aux croutons, spaghettis à la sauce tomate, épinards à la (sauce) béchamel, …
Bien qu'il y ait cette règle il existe des exceptions nombreuses et assez peu compréhensibles comme « soupe aux pois cassés » et « couscous de légume ».
Il existe par exemple une « soupe au chou » rustique qui consiste essentiellement de chou, mais le seul nom utilisé est « soupe au chou » ; il existe cependant une « soupe de chou-fleur à l'indienne ».