Brown the sausage. Heat a large pot or Dutch oven over medium-high.
Add the sausage and break it up with a spoon. Cook until deeply browned with crispy edges, about 7–9 minutes. If there’s more than 2 tablespoons of fat, spoon off the excess.
If the pot is dry, add a little olive oil.
Sweat the vegetables. Add onion, carrots, and celery with a pinch of salt. Cook, stirring, until softened and lightly golden, about 5–7 minutes. You want gentle browning for flavor without burning.
Bloom the aromatics. Stir in garlic, tomato paste, and red pepper flakes.
Cook 1–2 minutes until fragrant and the paste darkens slightly. This step wakes everything up.
Deglaze with wine. Pour in the white wine and scrape the bottom to release browned bits. Let it simmer until reduced by about half, 2–3 minutes.
Add broth and beans. Stir in the broth, cannellini beans, rosemary, and bay leaf.
If you have a Parmesan rind, add it now for extra savoriness.
Simmer. Bring to a gentle simmer and cook 15–20 minutes. The flavors will meld, and the broth will take on a light, creamy texture.
Thicken naturally. For body, use a spoon to mash some beans against the side of the pot—about 1/2 to 1 cup’s worth. Or, remove 1 cup of soup, blend until smooth, and return it to the pot.
Add the greens. Stir in kale or spinach and simmer until tender, 3–5 minutes.
Kale takes a bit longer than spinach.
Finish and season. Remove the bay leaf (and Parmesan rind). Stir in lemon juice. Taste and add salt and pepper as needed.
If you want a richer finish, swirl in a tablespoon of olive oil or a pat of butter.
Serve. Ladle into bowls and top with grated Parmesan, cracked black pepper, and a drizzle of olive oil. Serve with warm, crusty bread.