My yiayia never measured anything when she made keftedes, which made this recipe take me three tries to actually pin down on paper. The trick turned out to be soaking stale bread in milk instead of using dry breadcrumbs, which keeps the inside of the meatball soft even after frying.
Why You’ll Love This Recipe
- Ready in about 35 minutes
- The soaked bread trick keeps the meatballs tender instead of dense
- Works as a main dish or a party appetizer with toothpicks
Ingredients You’ll Need
| Ingredient | Quantity | Notes & Substitutions |
|---|---|---|
| Ground beef or lamb | 1 lb | A mix of both is traditional, but either works alone |
| Stale bread, crust removed | 2 slices | Soak in milk before mixing in |
| Milk | 1/4 cup | For soaking the bread |
| Onion, grated | 1/2 small | Grating instead of dicing blends it into the meat better |
| Garlic, minced | 2 cloves | |
| Fresh mint, chopped | 2 tbsp | Fresh oregano also works |
| Egg | 1 large | Binds the mixture |
| Olive oil | For frying | |
| Salt and pepper | To taste |
Pro tip: squeeze the soaked bread lightly before mixing it in. You want it moist, not dripping, or the meatball mixture gets too loose to shape.
Kitchen Tools & Equipment
- A large skillet for frying
- A small bowl for soaking the bread
- A box grater for the onion
Step by Step Instructions
Step 1: Prep the Ingredients
Soak the bread in milk for a few minutes, then squeeze out the excess liquid.
Step 2: Start Cooking
Combine the soaked bread, meat, onion, garlic, mint, egg, salt, and pepper in a bowl. Mix gently, just until combined.
Step 3: Add Layers of Flavor
Shape the mixture into small balls, about the size of a golf ball.
Step 4: Bring It All Together
Heat olive oil in a skillet over medium heat. Fry the meatballs in batches, turning occasionally, until browned on all sides and cooked through, about 8 to 10 minutes, reaching a safe internal temperature per USDA guidelines.
Step 5: Serve and Enjoy!
Drain on paper towels and serve warm with tzatziki or a squeeze of lemon.
Expert Tips & Common Mistakes to Avoid
Tips:
- Chill the shaped meatballs for 20 minutes before frying so they hold their shape better in the hot oil.
- Fry in batches so the pan doesn’t crowd, which keeps the oil temperature steady.
Mistakes:
- Overmixing the meat mixture, which makes the meatballs tough instead of tender.
- Skipping the bread soak and using dry breadcrumbs instead, which leaves the inside drier.
Recipe Variations & Customizations
- Gluten Free: use a gluten free bread for soaking, or substitute cooked rice.
- Spicy: add a pinch of chili flakes to the mixture.
- Protein swap: ground turkey works, though the texture is lighter than the traditional beef and lamb blend.
What to Serve With This Dish
Serve with tzatziki, a Greek salad, and warm pita. A side of Mediterranean quinoa salad rounds out the table nicely, and roasted garlic aioli works in a pinch if you’re out of tzatziki.
How to Store & Reheat Leftovers
Storage: keep in an airtight container in the fridge for up to 4 days.
Reheating: warm in a skillet over low heat, or in the oven, so they don’t dry out. The microwave works but softens the texture.
Freezing: freeze cooked meatballs for up to 3 months. Thaw in the fridge before reheating.
FAQs About This Recipe
Can I bake these instead of frying?
Yes, bake at 400 degrees for about 20 minutes, flipping halfway, though the outside won’t get quite as crisp as frying.
What if I don’t have fresh mint?
Fresh or dried oregano works as a substitute, and is actually more common in some regional versions of this recipe.
Final Thoughts
My yiayia would probably still find something to critique about my technique, but this is as close as I’ve gotten without her standing over my shoulder.
Save this one, it’s worth having on repeat.

