Rinse lentils in a fine-mesh strainer under cold water, removing any debris. Dice onion, carrots, and celery into 1/4-inch pieces, mince garlic, and chop greens.
Heat olive oil in Dutch oven over medium heat. Add onion and cook 5 minutes until translucent, then add carrots and celery and cook 5-7 minutes until softened. Add garlic and cook 30 seconds until fragrant.
Add thyme, cumin, paprika, and red pepper flakes, stirring for 1 minute to toast. Pour in diced tomatoes with juice and cook 2-3 minutes, breaking up larger pieces.
Stir in rinsed lentils and bay leaves. Pour in broth, ensuring lentils are submerged by at least 1 inch. Bring to a boil over high heat, then reduce to low and simmer with lid slightly ajar.
Simmer for 35-45 minutes, stirring every 10 minutes, until lentils are tender but hold their shape. Add more broth if soup becomes too thick.
Remove bay leaves. Stir in chopped spinach or kale and cook 2-3 minutes until wilted. Add lemon juice and season with salt and pepper to taste.
For creamier texture, use an immersion blender to puree half the soup in the pot, or transfer 2-3 cups to a blender, puree, and stir back in.
Ladle hot soup into bowls, ensuring each serving has a good mix of lentils, vegetables, and broth. Garnish with fresh parsley and serve with crusty bread.