Mix the meatballs. In a bowl, combine ground meat, rice, egg, onion, garlic, cilantro, mint, cumin, salt, and pepper.
Use clean hands to mix just until combined. Do not overmix or the meatballs will be tough.
Form the meatballs. With damp hands, roll into 1 to 1.5-inch balls. You should get about 18–22. Set them on a plate while you start the soup.
Sauté the aromatics. In a large pot, heat olive oil over medium.
Add onion, garlic, and jalapeño. Cook 3–4 minutes until softened and fragrant, stirring often.
Build the base. Stir in cumin, oregano, and bay leaf. Add the diced tomatoes and their juices.
Cook 2 minutes to meld flavors.
Add broth and bring to a simmer. Pour in the broth and bring to a gentle simmer over medium heat. Taste and season lightly with salt and pepper to start.
Drop in the meatballs. Gently lower the meatballs into the simmering broth. Keep the simmer gentle so they don’t break apart. Do not stir much in the first few minutes.
Add hearty vegetables. After 5 minutes, add the carrots and potato (if using).
Simmer 10 minutes.
Add tender vegetables. Stir in the zucchini and continue simmering 10–12 minutes more, until the meatballs are cooked through and the rice inside is tender. Total simmer time for the meatballs is about 20–25 minutes.
Finish and adjust. Remove the bay leaf. Stir in fresh cilantro.
Taste and adjust salt, pepper, and heat. If you want more brightness, squeeze in a little lime juice.
Serve. Ladle into bowls and serve with lime wedges. Warm tortillas or crusty bread are great on the side.