12 ounces ground beef
1/2 cup freshly grated Parmesan, plus more for serving
1/4 cup plus 3 tablespoons minced fresh parsley
2 teaspoons lemon juice
1/4 teaspoon ground oregano
2 cloves garlic
1 large egg
Kosher salt and freshly ground black pepper
3 tablespoons olive oil
7 cups low-sodium beef stock
2 heaping tablespoons tomato paste
1 teaspoon peppercorns
2 bay leaves
1 cup diced russet potatoes (not peeled)
3/4 cup diced carrots
3/4 cup diced celery
3/4 cup diced onions
8 ounces regular white cabbage, sliced
1 loaf crusty bread, for serving
To make the meatballs, add the ground beef, grated Parmesan, 3 tablespoons of the parsley, the lemon juice, ground oregano, garlic, egg, 1/4 teaspoon salt and 1/2 teaspoon ground pepper to a bowl and mix together well. Roll the mixture into 1-inch balls.
In a large pot, heat the olive oil over medium-high heat. Brown the meatballs in batches, turning to brown all sides, 3 to 4 minutes per batch. No need to cook them all the way as they'll go back into the soup later. Remove them with a slotted spoon and set aside.
Now, grab some beef stock and pour it into a pot. Add some salt and pepper. Stir in the tomato paste--it adds so much yummy richness. Make a bouquet garni by adding the peppercorns, bay leaves and remaining 1/4 cup parsley to a piece of cheesecloth and tying it into a bundle using kitchen twine; drop it right into the soup. Bring the soup to a boil, then reduce the heat and let it simmer for 30 minutes.
Remove the bouquet garni, which now resembles a jellyfish with jaundice. Go ahead and discard it; it's lived a full life. Add the diced potatoes, carrots, celery and onions and the sliced cabbage. Finally, in go the browned meatballs. Let the soup simmer long enough for the vegetables to get slightly tender and the meatballs to cook all the way through, another 20 minutes or so.
You can sprinkle the soup with some freshly grated Parmesan if you'd like one last dose of decadence. Serve with crusty bread.