Heat olive oil in a large pot over medium heat. Add the diced onion and cook for 5 minutes until softened and translucent.
Stir in the minced garlic, cumin, smoked paprika, and cayenne pepper. Cook for 1 minute until fragrant, stirring constantly to prevent burning.
Add the rinsed lentils, diced tomatoes (with their juice), vegetable broth, and diced carrots. Stir everything together well.
Bring the mixture to a boil, then reduce heat to low and simmer uncovered for 25-30 minutes, stirring occasionally, until lentils are tender and the stew has thickened.
Stir in the chopped spinach and cook for 2-3 minutes until wilted. Season with salt and pepper to taste.
Serve hot, garnished with fresh cilantro and a squeeze of lemon juice. Perfect with crusty bread for dipping!