Brown the sausage: Heat a large pot or Dutch oven over medium-high.
Add the sausage and cook, breaking it into small pieces, until browned and cooked through, about 6–8 minutes. If there’s excess fat, spoon off all but 1 tablespoon. If the pan looks dry, add the olive oil.
Sauté the aromatics: Add the onion, carrots, and celery.
Cook, stirring often, until softened, 5–7 minutes. Season lightly with salt to help them release moisture.
Add garlic and tomato paste: Stir in the garlic and cook 30 seconds until fragrant. Add the tomato paste and cook 1–2 minutes to caramelize slightly; it should deepen in color.
Season the base: Sprinkle in the oregano, basil, and red pepper flakes.
Stir to coat the sausage and vegetables.
Build the soup: Add the diced tomatoes (with juices), beans, bay leaf, and broth. Scrape up any browned bits from the bottom of the pot—those add flavor.
Simmer: Bring to a boil, then reduce to a gentle simmer. Partially cover and cook for 15–20 minutes to let the flavors meld.
If using zucchini, add it during the last 10 minutes so it stays tender.
Add greens: Stir in the kale or spinach and simmer 2–3 minutes, just until wilted and bright.
Finish and taste: Remove the bay leaf. Stir in the parsley and lemon juice. Taste and adjust with salt and pepper.
If you want more heat, add a pinch of red pepper flakes.
Serve: Ladle into bowls and top with a sprinkle of Parmesan, if you like. Serve with crusty bread or a simple side salad.