Heat olive oil in a large skillet over medium heat.
Add onion, carrots, and celery. Cook, stirring occasionally, until the vegetables are softened and the onion is translucent, about 5-6 minutes.
Add garlic, cumin, and paprika. Cook for 30 seconds, stirring to bloom the spices.
Transfer the sautéed vegetables to a 6-quart (or larger) slow cooker. Add lentils, diced tomatoes with juices, vegetable broth, oregano, thyme, salt, and pepper. Stir to combine.
Cover and cook on low for 6-8 hours or high for 3-4 hours, until lentils are completely tender and starting to break down.
About 10 minutes before serving, use an immersion blender to partially blend the soup to your desired consistency, leaving some lentils whole. (Alternatively, remove 2 cups of soup, let cool slightly, blend until smooth, and return to the slow cooker.)
Stir in the spinach and let cook until wilted, about 5 minutes.
Stir in lemon juice, taste, and adjust seasoning with salt as needed.
Ladle into bowls, top with fresh basil, and serve with crusty bread if desired.
Notes
As the soup sits, the lentils will soak up more of the liquid. When reheating leftovers, add a little more stock to thin it to your desired consistency.
Brown lentils can be swapped for green lentils. Green lentils are firmer, so cooking time may need to be adjusted.
Kale can be used instead of baby spinach in an equal amount.
Add crushed red pepper for extra heat.
Use smoked paprika for a smokier flavor.
Top each bowl with 2 tablespoons plain Greek yogurt for extra creaminess and protein (+3g protein per serving)