Skip to content
Zaffaron

Qolqoli Gooshti (قلقلی گوشتی) — Persian-Style Creamy Beef Meatballs

Tender Persian-style beef meatballs enriched with mozzarella, gently simmered in a silky white sauce. Familiar savory flavors meet a modern, velvety finish—comforting, elegant, and weeknight-friendly with rice or bread.

By Zaffaron Kitchen· Published March 16, 2026 Verified Recipe
Nut-Free Halal
Contains: dairy, gluten
65 min total Prep 35m · Cook 30m 4 servings 642 cal ~$4.25/serving
↓ Jump to Recipe
Qolqoli Gooshti — Persian-Style Creamy Beef Meatballs - authentic persian recipe

Printable Recipe Card

Servings: 4 · Total: 65 min · Difficulty: medium

Ingredients (quick list)

  • 500 g Ground beef (85–90% lean) (Cold from the refrigerator for easier shaping)
  • 180 g Yellow onion (Grated on the fine side of a box grater, then squeezed very dry)
  • 60 g Panko breadcrumbs (Fine breadcrumbs also work)
  • 60 ml Whole milk (For soaking the breadcrumbs)
  • 20 g Fresh parsley (Finely chopped)
  • 7 g Salt (About 1 1/4 tsp fine salt)
  • 1 g Black pepper (About 1/2 tsp freshly ground)
  • 120 g Low-moisture mozzarella cheese (Cut into 1 cm cubes for stuffing)
  • 40 g Unsalted butter (For the sauce base)
  • 30 g All-purpose flour (About 1/4 cup, spooned and leveled)

Steps (summary)

  1. Prepare the binder: in a medium bowl, combine the panko breadcrumbs with 60 ml milk and stir until evenly moistened. Let stand…
  2. Mix the meatball base: add ground beef, squeezed grated onion, chopped parsley, salt, and black pepper to a large bowl. Add the…
  3. Shape and stuff: portion the mixture into 20 pieces (about 35–40 g each). Flatten one portion in your palm, place a mozzarella…
  4. Start the white sauce: in a wide, deep skillet or sauté pan, melt butter over medium heat. Whisk in flour and cook 2 minutes, s…
  5. Build a silky sauce: slowly whisk in 600 ml milk in a steady stream. Bring to a gentle simmer, whisking often, then reduce heat…
  6. Poach the meatballs: lower the heat so the sauce barely bubbles. Nestle meatballs into the sauce in a single layer, spacing the…

+ 1 more steps in the full instructions section below.

Cultural Background

Small round meatballs are a familiar home-cooking format across Iran, often shaped for quick cooking and easy serving with rice or bread. This creamy, milk-based sauce reflects a modern, comfort-forward approach that adapts classic techniques to contemporary tastes while keeping the dish family-friendly.

savorycreamymildly pepperybalanced saltinesstender meatballsmelty cheese centersilky saucebutteryfresh herbstoasted flour🌶 mild

Equipment

Box graterClean kitchen towel or cheeseclothMixing bowlsDigital kitchen scaleMeasuring cups and spoonsWhiskWide deep skillet with lid (28–30 cm)Instant-read thermometer (recommended)

💡 Tips

  • Squeeze the grated onion very dry; excess onion juice is the most common cause of meatballs that fall apart.
  • Keep the sauce at a gentle simmer (not a boil) so it stays smooth and the meatballs remain tender.
  • Warm the milk before adding it to the roux to minimize lumps and speed thickening.
  • If you want a lighter sauce, replace 120 ml of the milk with low-sodium beef stock and reduce salt slightly.

⚠️ Common Mistakes

  • ❌ Not squeezing moisture from the grated onion

    💡 Why: Excess liquid weakens the meat mixture and can cause meatballs to crack or break in the sauce

    ✅ Fix: Squeeze the onion in a towel until nearly dry; if the mixture is still soft, chill 10–15 minutes before shaping

  • ❌ Boiling the sauce after adding meatballs

    💡 Why: A hard boil can make the sauce grainy and can toughen the meatballs

    ✅ Fix: Keep the pan at a bare simmer; you should see only occasional small bubbles around the edges

  • ❌ Adding cold milk too quickly to the roux

    💡 Why: Rapid temperature change and fast pouring can create flour lumps that are hard to whisk out

    ✅ Fix: Warm the milk and add it gradually while whisking constantly; if lumps form, whisk vigorously off-heat for 30 seconds

  • ❌ Overmixing the meatball mixture

    💡 Why: Overworked proteins tighten, producing dense, bouncy meatballs

    ✅ Fix: Mix only until combined and cohesive (about 60–90 seconds); stop as soon as the mixture holds together

🧊 How to Store

Cool to room temperature within 2 hours, then refrigerate in an airtight container with sauce for up to 3 days. Reheat gently on the stovetop over low heat with 30–60 ml milk to loosen; avoid boiling to prevent sauce splitting. Freeze up to 2 months; thaw overnight in the fridge and reheat slowly.

📅 Make Ahead

Shape and stuff the meatballs up to 24 hours ahead; store covered in the refrigerator. Make the sauce up to 2 days ahead and reheat gently, then poach meatballs just before serving for best texture and a molten cheese center.

🍽️ Pairs Well With

  • Steamed basmati rice
  • Flatbread or crusty bread
  • Simple cucumber and herb salad
  • Pickled vegetables

Regional Variations

  • Tehran-style home cookingOften served with a lighter, thinner sauce and smaller meatballs for faster cooking, sometimes finished with extra black pepper and chopped herbs at the table.
  • Northern Iran (Caspian-influenced tables)Commonly paired with abundant fresh herbs and crisp side salads; cooks may add more parsley and serve with rice and pickles for a brighter, more herb-forward meal.
weeknight dinner family gatherings potluck-style meals comfort-food cravings
#family-style#comfort-food#stovetop#make-ahead-friendly

Ingredients

  • 500 gGround beef (85–90% lean) (Cold from the refrigerator for easier shaping)
  • 180 gYellow onion (Grated on the fine side of a box grater, then squeezed very dry)
  • 60 gPanko breadcrumbs (Fine breadcrumbs also work)
  • 60 mlWhole milk (For soaking the breadcrumbs)
  • 20 gFresh parsley (Finely chopped)
  • 7 gSalt (About 1 1/4 tsp fine salt)
  • 1 gBlack pepper (About 1/2 tsp freshly ground)
  • 120 gLow-moisture mozzarella cheese (Cut into 1 cm cubes for stuffing)
  • 40 gUnsalted butter (For the sauce base)
  • 30 gAll-purpose flour (About 1/4 cup, spooned and leveled)

🔄 Substitutions

  • Ground beef→ Ground lamb
  • Panko breadcrumbs→ Fine dry breadcrumbs
  • Whole milk→ 2% milk
  • Mozzarella cheese→ Mild provolone

Instructions

  1. 1

    Prepare the binder: in a medium bowl, combine the panko breadcrumbs with 60 ml milk and stir until evenly moistened. Let stand 5 minutes so the crumbs soften fully. Meanwhile, grate the onion and squeeze it very dry in a clean towel; removing liquid prevents the meatballs from becoming loose.

  2. 2

    Mix the meatball base: add ground beef, squeezed grated onion, chopped parsley, salt, and black pepper to a large bowl. Add the soaked breadcrumbs and mix with your hand for 60–90 seconds, just until cohesive. Avoid overmixing, which can make the meatballs dense and springy.

  3. 3

    Shape and stuff: portion the mixture into 20 pieces (about 35–40 g each). Flatten one portion in your palm, place a mozzarella cube in the center, then wrap and roll into a smooth ball. Repeat, keeping balls similar size so they cook evenly; chill 10 minutes if the mixture feels soft.

  4. 4

    Start the white sauce: in a wide, deep skillet or sauté pan, melt butter over medium heat. Whisk in flour and cook 2 minutes, stirring constantly, until the mixture smells lightly nutty but stays pale. This brief cooking removes raw flour taste while keeping the sauce creamy and white.

  5. 5

    Build a silky sauce: slowly whisk in 600 ml milk in a steady stream. Bring to a gentle simmer, whisking often, then reduce heat to medium-low and cook 6–8 minutes until the sauce coats the back of a spoon. Season with 3 g salt and 0.5 g black pepper; keep at a low simmer.

  6. 6

    Poach the meatballs: lower the heat so the sauce barely bubbles. Nestle meatballs into the sauce in a single layer, spacing them slightly. Cover and cook 10 minutes, then uncover and gently turn each meatball. Continue cooking 8–10 minutes more, until the centers reach 71°C/160°F.

  7. 7

    Finish and rest: keep the pan on low heat for 2 minutes to let the sauce thicken slightly around the meatballs. Turn off the heat, cover, and rest 5 minutes; this helps the mozzarella settle into a creamy pocket. Taste the sauce and adjust with up to 1 g more salt or extra pepper.

🪪 Recipe Passport

Origin: Persian Cuisine
Researched by: Zaffaron Kitchen
Published: March 16, 2026

Cultural Background

Small round meatballs are a familiar home-cooking format across Iran, often shaped for quick cooking and easy serving with rice or bread. This creamy, milk-based sauce reflects a modern, comfort-forward approach that adapts classic techniques to contemporary tastes while keeping the dish family-friendly.

Regional Variations

Tehran-style home cooking: Often served with a lighter, thinner sauce and smaller meatballs for faster cooking, sometimes finished with extra black pepper and chopped herbs at the table.
Northern Iran (Caspian-influenced tables): Commonly paired with abundant fresh herbs and crisp side salads; cooks may add more parsley and serve with rice and pickles for a brighter, more herb-forward meal.

Researched from multiple sources and validated by the Zaffaron editorial team. Every recipe is tested for accuracy, measurements, and cultural authenticity.

Share:

Nutrition per serving

642
Calories
41g
Protein
40g
Fat
29g
Carbs
1g
Fiber
980mg
Sodium

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

Reviews

—
Rated 0.0 out of 5 stars
0 reviews

Cooked this recipe?

Tap the stars to rate it — that's all it takes. A few words are welcome but optional.

Please sign in to rate this recipe.
Rated 0.0 out of 5 stars

No ratings yet. Cooked this one? Be the first to rate it — it takes one tap.