Makaroni ba Mahi (ماکارونی با ماهی) — Persian-Style Fish Macaroni
Persian-style fish macaroni combines saucy tomato-glazed pasta with flaky pan-seared fish, then steams briefly for a cohesive, comforting texture. Finished with grated cheese, it’s a coastal-inspired home-cooking favorite.

Printable Recipe Card
Servings: 4 · Total: 80 min · Difficulty: medium
Ingredients (quick list)
- 350 g Dried macaroni (short tubes or elbows) (Cook to very firm (undercooked) for steaming later)
- 3000 ml Water (For boiling pasta)
- 18 g Fine sea salt (For pasta water)
- 15 ml Vegetable oil (For coating drained pasta)
- 500 g Boneless white fish fillets (cod, haddock, pollock, or tilapia) (Cut into 4–5 cm pieces; pat very dry)
- 2 g Black pepper (Freshly ground)
- 200 g Yellow onion (Finely diced)
- 12 g Garlic (Minced)
- 360 g Tomato sauce (plain) (About 1 1/2 cups; use smooth canned tomato sauce)
- 120 g Grated cheese (mozzarella or mild cheddar) (Coarsely grated)
Steps (summary)
- Bring 3000 ml water to a rolling boil in a large pot. Add 18 g salt, then add 350 g macaroni. Boil until very firm (about 2 min…
- Season 500 g fish pieces with 6 g salt and 2 g black pepper. Heat 30 ml oil in a wide skillet over medium-high heat (about 200°…
- Reduce heat to medium. In the same skillet, add 30 ml oil, then sauté 200 g diced onion for 8–10 minutes until soft and lightly…
- Simmer the tomato glaze uncovered for 8–12 minutes, stirring every 2 minutes, until it thickens to a glossy, spoon-coating sauc…
- Set a heavy pot (nonstick or enameled) over medium heat. Add 15 ml oil and 60 ml water to the base. Layer one-third of the maca…
- Using the handle of a wooden spoon, poke 5–6 holes down through the layers to vent steam. Cover the lid with a clean towel and…
+ 1 more steps in the full instructions section below.
Cultural Background
Persian-style layered macaroni is a well-known home-cooking technique that uses brief steaming to meld pasta with a seasoned sauce. Coastal households and seafood-loving families often adapt the method with fish, reflecting how everyday Iranian cooking flexibly incorporates local ingredients and preferences.
Equipment
💡 Tips
- Undercook the pasta by about 2 minutes; the final steaming is what creates the cohesive Persian-style texture.
- Pat the fish very dry before searing to prevent sticking and to keep the pieces from breaking apart.
- If your tomato sauce is acidic, simmer a few minutes longer to mellow it rather than adding sweeteners.
- A heavy-bottom pot helps prevent scorching during the steaming stage; keep heat low and steady.
- Grate cheese coarsely so it melts evenly without disappearing into the pasta.
⚠️ Common Mistakes
❌ Cooking the pasta fully during boiling
💡 Why: Fully cooked pasta turns mushy after the steaming stage and loses the layered texture.
✅ Fix: Boil 2 minutes less than package directions and drain well before layering.
❌ Stirring the fish aggressively into the sauce
💡 Why: White fish breaks into tiny pieces, making the dish dry and uneven.
✅ Fix: Sear fish in larger pieces and fold it in gently at the end, warming briefly.
❌ Steaming over heat that is too high
💡 Why: High heat can scorch the bottom before the pasta finishes steaming through.
✅ Fix: Use low heat for 25–30 minutes; a heavy pot and a towel-wrapped lid help regulate steam.
❌ Using a watery sauce
💡 Why: Excess liquid makes the layers soggy and prevents the glaze from coating the pasta.
✅ Fix: Simmer the tomato mixture until glossy and spoon-coating before layering.
🧊 How to Store
Cool to room temperature within 2 hours, then refrigerate in an airtight container for up to 3 days. Reheat covered with 1–2 tablespoons water in a saucepan over low heat for 10–12 minutes, or microwave covered at 50% power until hot throughout. Not ideal for freezing due to fish texture changes.
📅 Make Ahead
Prepare the tomato glaze up to 24 hours ahead and refrigerate. Sear the fish and store separately for up to 24 hours. Boil pasta the day of serving for best texture; if needed, boil up to 6 hours ahead, toss with oil, and refrigerate, then bring to room temperature before layering and steaming.
🍽️ Pairs Well With
- Shirazi-style cucumber and tomato salad
- Pickled vegetables
- Plain yogurt or a cucumber-yogurt side
- Lemon wedges
Regional Variations
- Caspian Sea coastOften made with local white fish and a slightly lighter tomato glaze, focusing on the fish’s natural sweetness; some cooks use more onion and keep the sauce less concentrated.
- Persian Gulf coastMay feature firmer fish and a deeper, more robust tomato base; families sometimes increase black pepper for a warmer finish while keeping the overall profile mild.
Ingredients
- 350 gDried macaroni (short tubes or elbows) (Cook to very firm (undercooked) for steaming later)
- 3000 mlWater (For boiling pasta)
- 18 gFine sea salt (For pasta water)
- 15 mlVegetable oil (For coating drained pasta)
- 500 gBoneless white fish fillets (cod, haddock, pollock, or tilapia) (Cut into 4–5 cm pieces; pat very dry)
- 2 gBlack pepper (Freshly ground)
- 200 gYellow onion (Finely diced)
- 12 gGarlic (Minced)
- 360 gTomato sauce (plain) (About 1 1/2 cups; use smooth canned tomato sauce)
- 120 gGrated cheese (mozzarella or mild cheddar) (Coarsely grated)
🔄 Substitutions
- Boneless white fish fillets→ Canned tuna in water, drained (300 g)
- Tomato sauce (plain)→ Crushed tomatoes (360 g) + 30 ml water
- Grated mozzarella or mild cheddar→ Grated gouda or Monterey Jack
Instructions
- 1
Bring 3000 ml water to a rolling boil in a large pot. Add 18 g salt, then add 350 g macaroni. Boil until very firm (about 2 minutes less than package directions), so it can finish cooking during steaming. Drain well, return to the pot, and toss with 15 ml oil to prevent sticking.
- 2
Season 500 g fish pieces with 6 g salt and 2 g black pepper. Heat 30 ml oil in a wide skillet over medium-high heat (about 200°C surface heat). Sear fish 2–3 minutes per side until lightly golden and just cooked through. Transfer to a plate; keep pieces intact to avoid shredding.
- 3
Reduce heat to medium. In the same skillet, add 30 ml oil, then sauté 200 g diced onion for 8–10 minutes until soft and lightly golden. Add 12 g minced garlic and cook 60 seconds until fragrant. Stir in 360 g tomato sauce, 120 ml water, 4 g salt, and 1 g black pepper.
- 4
Simmer the tomato glaze uncovered for 8–12 minutes, stirring every 2 minutes, until it thickens to a glossy, spoon-coating sauce. Gently fold the seared fish back in and warm for 2 minutes. Turn off heat; the fish should remain in large flakes rather than breaking into tiny bits.
- 5
Set a heavy pot (nonstick or enameled) over medium heat. Add 15 ml oil and 60 ml water to the base. Layer one-third of the macaroni, then spoon over half the fish-tomato mixture. Add another third of pasta, then the remaining fish sauce, finishing with the last third of pasta.
- 6
Using the handle of a wooden spoon, poke 5–6 holes down through the layers to vent steam. Cover the lid with a clean towel and place it tightly on the pot. Steam over low heat for 25–30 minutes, rotating the pot once halfway, until the pasta is tender and the flavors meld.
- 7
Turn off heat and rest, covered, for 10 minutes to set the layers. Sprinkle 120 g grated cheese over the top, cover again, and let it melt from residual heat for 3–5 minutes. Serve by scooping down to capture all layers, keeping fish flakes as intact as possible.
🪪 Recipe Passport
Cultural Background
Persian-style layered macaroni is a well-known home-cooking technique that uses brief steaming to meld pasta with a seasoned sauce. Coastal households and seafood-loving families often adapt the method with fish, reflecting how everyday Iranian cooking flexibly incorporates local ingredients and preferences.
Regional Variations
Researched from multiple sources and validated by the Zaffaron editorial team. Every recipe is tested for accuracy, measurements, and cultural authenticity.
Nutrition per serving
Pairs well with
If you enjoyed this recipe, here are a few related Zaffaron recipes to try next.
Does your family make this differently?
Every family has their own version. Maybe your grandmother adds a secret ingredient, or your aunt has a completely different technique. Preserve your family's version — with their name on it, forever.
You Might Also Like

Persian Sweet Corn Soup (سوپ ذرت) — Silky Golden Comfort Soup
Persian · Soups · 50 min

Gheimeh Kadoo Halvai (قیمه کدو حلوایی) — Sweet Pumpkin & Legume Stew
Persian · Stews · 110 min

Jeweled Rice (مرصع پلو) — Festive Persian rice with saffron chicken and jeweled fruits
Persian · Rice Dishes · 135 min

Scrambled Hominy and Eggs (Mote pillo) — Ecuadorian Highland Breakfast
Ecuadorian · Main Courses · 25 min

Sinj Stuffed Cabbage Rolls (Sinjski arambaši) — Hand-Chopped Meat in Sour Cabbage
Croatian · Main Courses · 245 min

Izmir Kofte (İzmir Köfte) — Oven-Baked Meatballs with Tomato Sauce and Potatoes
Turkish · Main Courses · 70 min

Sac Kavurma (Saç Kavurma) — Thin-Sliced Turkish Meat Sautéed with Onions
Turkish · Main Courses · 38 min

Macaroni with Gherona Sauce (ماکارونی با سس غرونا) — Persian-Inspired Creamy Herb Cold Pasta
Persian · Main Courses · 40 min
Reviews
Cooked this recipe?
Tap the stars to rate it — that's all it takes. A few words are welcome but optional.
No ratings yet. Cooked this one? Be the first to rate it — it takes one tap.