Heat olive oil in a large pot over medium heat.
Add onion and cook 4–5 minutes until soft.
Stir in garlic and cook 30 seconds until fragrant.
Add carrots, squash, and broth. Bring to a gentle simmer.
Cook 10–12 minutes until vegetables are tender.
Add fish, salt, and pepper. Simmer gently for 4–6 minutes until fish flakes easily.
Remove from heat and stir in lemon juice and fresh dill.
Add spinach or kale if using and let wilt before serving.