Remove stems and seeds from guajillo chiles. Cover with water in a small saucepan, bring to a gentle boil, then simmer for 10 minutes until soft and pliable. Remove chiles and discard soaking water.
Place quartered tomatoes, rehydrated guajillo chiles, chipotle peppers with adobo sauce, and 1/2 cup (120ml) of stock into a blender. Blend on high speed until smooth and glossy. Strain through a fine mesh strainer and set aside.
Dice onion, mince garlic, slice carrots, cube potatoes, and cut zucchini into half-moons. Pat fish dry, season with salt and pepper, and cut into 2-inch chunks.
Heat olive oil in a large pot over medium-high heat. Add onion and cook 4-5 minutes until translucent. Add garlic and cook 1 minute. Add cumin and Mexican oregano, toast for 30 seconds.
Pour in strained tomato-chile sauce and cook over medium-high heat for 3-4 minutes, stirring frequently, until it darkens and becomes fragrant.
Add remaining 8 cups (2 liters) of stock, bay leaf, cubed potatoes, and sliced carrots. Bring to a boil, then reduce heat to medium-low, cover partially, and simmer for 12-15 minutes until potatoes are just fork-tender. Season with salt and pepper.
Add sliced zucchini and simmer for 3-4 minutes until tender but still has a slight bite.
Gently place seasoned fish chunks into the simmering broth. Reduce heat to low and simmer for 5-7 minutes until fish is opaque and flakes easily. Squeeze in juice of 1 lime, stir gently, and discard bay leaf.
Scatter chopped cilantro over the top and gently stir. Ladle into bowls and serve with lime wedges and warm corn tortillas on the side.