Bulgarian Meatball and Yogurt Soup
Bulgarian meatball soup turns ground meat, rice, vegetables, and tangy yogurt into a cozy, bright, and budget-friendly dinner with tender meatballs in every spoonful.
This soup is inspired by the comforting Bulgarian style of finishing broth with yogurt, egg yolk, and lemon. The result tastes creamy without heavy cream. It feels hearty from the potatoes and rice, but still fresh from the lemon and parsley.
Why You’ll Love This Recipe
- Tender meatballs: Rice mixed into the meat keeps each small meatball soft and satisfying.
- Bright creamy broth: Yogurt, egg yolk, and lemon make the soup silky, tangy, and comforting.
- Simple pantry ingredients: Potatoes, carrots, celery, onion, broth, rice, and ground meat do most of the work.
- Good for a weeknight: Everything simmers in one pot, and the soup tastes like it cooked much longer than it did.
Fabian’s Budget and Health Tip: Use whichever ground meat is on sale. Ground pork gives a richer soup, while lean ground beef keeps it lighter. You can also use half the meat and add one extra potato if you need to stretch the pot without losing comfort.
Ingredients (Serves 4)
For the Meatballs
- 1 lb ground beef or ground pork (450 g)
- â…“ cup uncooked white rice (65 g)
- ½ small onion, finely grated (50 g)
- ¾ teaspoon salt (4 g)
- ½ teaspoon black pepper (1 g)
For the Soup
- 6 cups chicken or beef broth (1.4 l)
- 2 medium potatoes, peeled and diced (340 g)
- 2 medium carrots, diced (150 g)
- 1 celery rib, diced (50 g)
- ½ small onion, finely chopped (50 g)
- 1 teaspoon salt, or to taste (5 g)
- ½ teaspoon black pepper (1 g)
- 1 cup plain yogurt, preferably whole milk or Greek style (240 g)
- 1 large egg yolk
- 2 tablespoons fresh lemon juice (30 ml)
- ¼ cup chopped fresh parsley (15 g)
Step-by-Step Instructions
1. Mix the Meatballs
Add the ground meat, uncooked rice, grated onion, salt, and black pepper to a bowl. Mix gently with your hands until the rice and onion look evenly spread through the meat. Do not pack the mixture too hard, or the meatballs can turn firm.
2. Shape Small Meatballs
Roll the mixture into small meatballs, about 1 inch wide. You should get about 24 to 28 pieces. Keep them small so the rice cooks through and the meatballs stay tender.
3. Start the Broth and Vegetables
Pour the broth into a large pot and bring it to a steady simmer over medium heat. Add the potatoes, carrots, celery, chopped onion, salt, and black pepper. The broth should bubble gently, not boil hard.
4. Simmer the Meatballs
Lower the meatballs into the simmering broth one at a time. At first, they may sink. After a few minutes, they will firm up and float near the top. Skim off any foam if you like a clearer broth. Simmer for 25 to 30 minutes, until the potatoes are soft, the rice in the meatballs is tender, and the kitchen smells savory and sweet from the carrots and onion.
5. Whisk the Yogurt Finish
In a bowl, whisk the yogurt, egg yolk, and lemon juice until smooth. The mixture should look creamy and pale, with no streaks of yolk. This step gives the Bulgarian meatball soup its signature tangy body.
6. Temper the Yogurt
Turn the heat to low. Slowly whisk 1 cup of hot broth into the yogurt mixture, a few spoonfuls at a time. The bowl should feel warm, not steaming hot all at once. This keeps the yogurt and egg yolk from curdling.
7. Finish the Soup
Slowly pour the warm yogurt mixture back into the pot while stirring. Keep the heat low and do not let the soup boil after this point. Stir until the broth turns lightly creamy. Taste and add more salt, black pepper, or lemon juice if needed.
8. Add Parsley and Serve
Stir in the chopped parsley just before serving. The parsley should smell fresh and green against the warm broth. Ladle the soup into bowls with plenty of meatballs, vegetables, and creamy broth.
Expert Troubleshooting and FAQs
Why did my yogurt curdle?
The soup was likely too hot, or the yogurt mixture went in too quickly. Always temper it with hot broth first, then stir it into the pot over low heat. Do not boil the soup after adding yogurt.
Can I use Greek yogurt?
Yes. Greek yogurt makes the broth a little thicker and richer. If it feels too thick, whisk in a few extra spoonfuls of hot broth before adding it to the pot.
Can I make this with ground turkey or chicken?
Yes. Ground turkey or chicken works well, but the flavor will be milder. Add a little extra black pepper and use a good chicken broth to keep the soup savory.
How do I know the meatballs are fully cooked?
The meatballs should feel firm, and the rice inside should be tender when you cut one open. The center should no longer look pink if you use pork or beef.
Can I store leftovers?
Yes. Cool the soup, then store it in the fridge for up to 3 days. Reheat it gently over low heat and stir often. Avoid a hard boil so the yogurt broth stays smooth.
Estimated Nutritional Facts
These numbers are rough estimates per serving and may change based on the meat, yogurt, and broth you use.
- Calories: 390
- Protein: 26 g
- Carbs: 34 g
- Fats: 17 g
Bulgarian Meatball and Yogurt Soup

Ingredients
- 1 lb ground beef or ground pork (450 g)
- â…“ cup uncooked white rice (65 g)
- ½ small onion, finely grated (50 g)
- ¾ teaspoon salt (4 g)
- ½ teaspoon black pepper (1 g)
- 6 cups chicken or beef broth (1.4 l)
- 2 medium potatoes, peeled and diced (340 g)
- 2 medium carrots, diced (150 g)
- 1 celery rib, diced (50 g)
- ½ small onion, finely chopped (50 g)
- 1 teaspoon salt, or to taste (5 g)
- 1 cup plain yogurt, preferably whole milk or Greek style (240 g)
- 1 large egg yolk
- 2 tablespoons fresh lemon juice (30 ml)
- ¼ cup chopped fresh parsley (15 g)
Instructions
- 1. Mix the Meatballs. Add the ground meat, uncooked rice, grated onion, salt, and black pepper to a bowl. Mix gently with your hands until the rice and onion look evenly spread through the meat. Do not pack the mixture too hard, or the meatballs can turn firm.
- 2. Shape Small Meatballs. Roll the mixture into small meatballs, about 1 inch wide. You should get about 24 to 28 pieces. Keep them small so the rice cooks through and the meatballs stay tender.
- 3. Start the Broth and Vegetables. Pour the broth into a large pot and bring it to a steady simmer over medium heat. Add the potatoes, carrots, celery, chopped onion, salt, and black pepper. The broth should bubble gently, not boil hard.
- 4. Simmer the Meatballs. Lower the meatballs into the simmering broth one at a time. At first, they may sink. After a few minutes, they will firm up and float near the top. Skim off any foam if you like a clearer broth. Simmer for 25 to 30 minutes, until the potatoes are soft, the rice in the meatballs is tender, and the kitchen smells savory and sweet from the carrots and onion.
- 5. Whisk the Yogurt Finish. In a bowl, whisk the yogurt, egg yolk, and lemon juice until smooth. The mixture should look creamy and pale, with no streaks of yolk. This step gives the Bulgarian meatball soup its signature tangy body.
- 6. Temper the Yogurt. Turn the heat to low. Slowly whisk 1 cup of hot broth into the yogurt mixture, a few spoonfuls at a time. The bowl should feel warm, not steaming hot all at once. This keeps the yogurt and egg yolk from curdling.
- 7. Finish the Soup. Slowly pour the warm yogurt mixture back into the pot while stirring. Keep the heat low and do not let the soup boil after this point. Stir until the broth turns lightly creamy. Taste and add more salt, black pepper, or lemon juice if needed.
- 8. Add Parsley and Serve. Stir in the chopped parsley just before serving. The parsley should smell fresh and green against the warm broth. Ladle the soup into bowls with plenty of meatballs, vegetables, and creamy broth.









