Dice the onion into 1/4-inch pieces, mince the garlic, chop the carrots and celery into 1/4-inch pieces, and dice the zucchini into 1/2-inch cubes. Rinse the lentils in a colander under cold water and remove the sausage from its casings.
Heat 1 tablespoon of olive oil in a large Dutch oven over medium-high heat, then add the sausage and cook for 6–8 minutes, breaking it into small crumbles until browned. Drain excess grease, leaving about 2 tablespoons in the pot.
Reduce heat to medium, add the remaining 1 tablespoon olive oil if needed, then stir in the minced garlic and cook for 30–45 seconds until fragrant and just starting to turn golden.
Add the onion and cook for 3–4 minutes until translucent, then stir in the carrots and celery and cook for another 3–4 minutes until slightly softened. Season with a pinch of salt to help draw out moisture.
Stir in the diced zucchini along with the basil, oregano, thyme, parsley, red pepper flakes (if using), salt, and black pepper. Cook for 1–2 minutes to bloom the dried herbs.
Pour in the chicken broth, scraping up any browned bits from the bottom of the pot, then add the diced tomatoes with their juice, rinsed lentils, and bay leaves. Stir everything to combine.
Increase the heat to medium-high and bring the soup to a full rolling boil, about 5–7 minutes.
Reduce heat to medium-low, partially cover the pot with the lid left about 1 inch ajar, and simmer for 60–75 minutes, stirring every 15–20 minutes, until lentils are tender. Add broth or water 1/2 cup at a time if the soup becomes too thick.
Remove and discard the bay leaves, then taste and adjust salt and pepper as needed. For a thinner soup, add more broth; for a thicker soup, simmer uncovered for an additional 10–15 minutes.
Ladle the hot soup into bowls and garnish with freshly chopped parsley and grated Parmesan cheese. Serve immediately with crusty bread on the side.