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.

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)
- Prepare the binder: in a medium bowl, combine the panko breadcrumbs with 60 ml milk and stir until evenly moistened. Let stand…
- Mix the meatball base: add ground beef, squeezed grated onion, chopped parsley, salt, and black pepper to a large bowl. Add the…
- Shape and stuff: portion the mixture into 20 pieces (about 35–40 g each). Flatten one portion in your palm, place a mozzarella…
- 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…
- Build a silky sauce: slowly whisk in 600 ml milk in a steady stream. Bring to a gentle simmer, whisking often, then reduce heat…
- 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.
Equipment
💡 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.
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
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
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
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
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
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
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
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
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
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.
- Rolet-e Esfenaj (رولت اسفناج) – Persian Spinach Roll with Saffron Lemon Cream Sauce
- Sabzi Khordan Dolmeh (سبزی خوردن دلمه) — Persian-Style Stuffed Herbs & Labneh Bites
- Sabzijat Beryan (سبزیجات بریان) — Persian-Style Mediterranean Roasted Vegetables
- Reshteh Polo (رشته پلو) — Persian Celebration Noodle Rice with Braised Lamb
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

Mast-o-Khiar (ماست و خیار) — Persian Cucumber and Herb Yogurt Dip
Persian · Side Dishes · 25 min

Shirazi Salad (سالاد شیرازی) — Brunoised cucumber-tomato herb salad with ab-ghooreh
Persian · Salads · 20 min

Chelo Kebab Koobideh (چلو کباب کوبیده) — Persian Minced Meat Skewers with Saffron Rice
Persian · Kebabs · 75 min

Dongpo Pork (东坡肉) — Hangzhou Red-Braised Pork Belly
Chinese · Main Courses · 205 min

Peking Duck (北京烤鸭) — Crisp-Skinned Beijing Roast Duck
Chinese · Main Courses · 180 min

Azerbaijani Milk-Rice Porridge (Südlü Sıyıq) — Creamy Breakfast Rice with Saffron
Azerbaijani · Rice Dishes · 50 min

Keshkek (Keşkek) — Creamy Ceremonial Wheat and Lamb Stew
Turkish · Stews · 240 min

Prahok Ktis (ប្រហុកខ្ទិះ) — Cambodian Coconut Pork Dip
Cambodian · Appetizers · 55 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.