In a large mixing bowl, combine ground beef, uncooked rice, 1 diced onion, 2 cloves minced garlic, beaten egg, salt, pepper, and dried herbs.
Mix gently with hands until just combined, being careful not to overmix.
Form mixture into meatballs about 1½ inches in diameter (approximately 20-24 meatballs).
Heat olive oil in a large Dutch oven or soup pot over medium heat.
Working in batches, brown meatballs on all sides (about 2-3 minutes per batch). Transfer browned meatballs to a plate.
In the same pot, add the remaining diced onion, carrots, and celery. Sauté until vegetables begin to soften, about 5 minutes.
Add the remaining minced garlic and cook for 30 seconds until fragrant.
Stir in tomato paste and cook for 1-2 minutes to develop flavor.
Pour in beef broth and diced tomatoes with juice. Add bay leaf and paprika.
Bring mixture to a gentle boil, then reduce heat to a simmer.
Return browned meatballs to the pot.
Cover and simmer for 25-30 minutes, until rice in meatballs is fully cooked and meatballs are tender.
Season with salt and pepper to taste.
Remove bay leaf before serving.
Ladle into bowls and garnish with fresh parsley.