Prep your vegetables. Dice the onion, carrots, and celery into small, even pieces.
Rinse the lentils in a fine-mesh strainer and pick out any debris.
Sweat the aromatics. Warm 2 tablespoons of olive oil in a large pot over medium heat. Add onion, carrots, and celery with a pinch of salt. Cook, stirring occasionally, for 6–8 minutes until softened and slightly golden.
Add garlic and spices. Stir in the garlic, thyme, cumin, and red pepper flakes.
Cook for 30–60 seconds until fragrant, being careful not to burn the garlic.
Build the base. Add crushed tomatoes (or tomato paste) and cook for 1–2 minutes to mellow the acidity and deepen the flavor.
Simmer. Add the rinsed lentils, broth, bay leaf, and a small pinch of salt. Bring to a boil, then reduce to a gentle simmer. Cover partially and cook for 25–35 minutes, stirring occasionally, until the lentils are tender but not mushy.
Adjust texture. For a creamier soup, mash a ladleful of lentils against the pot or use an immersion blender for 3–5 quick pulses.
Keep some texture for a hearty feel.
Finish with acidity. Turn off the heat. Stir in lemon juice or red wine vinegar to brighten the flavors. Taste and add more salt and pepper as needed.
Optional greens and extras. If using spinach or kale, stir it in now and let it wilt for 1–2 minutes.
Add cooked sausage or a handful of fresh herbs if desired.
Serve. Ladle into bowls and top with parsley or dill. A drizzle of olive oil or a sprinkle of grated Parmesan (if not vegan) is a nice touch.