Here is one way that seems pretty simple. It requires separate tables for each recipe.
Make tables for each receipe like those shown on Sheet 2. These tables have no formulas. They can be on different sheets. You can put them into sheets for Appetizers, Seafood, Pasta, Deserts, and so on if that is helpful. All these tables need to all have unique names (no two the same even if they are on different sheets). You want no blank rows in these tables.
Table 1 needs to be more rows than you will ever have in a recipe. It will not add new rows on its own if a recipe has more ingredients than the table is set up for.
Formulas on Sheet 1::Table 1 are
A3 =IFERROR(INDEX(INDIRECT($B$1&"::A:C"),ROW()−1,COLUMN()),"-")
Copy/Paste that to all the other data cells.
The final step could be to put a filter on the table to show only those rows where column A is not "-"