Heat olive oil in a large pot over medium heat. Add onion, carrots, and celery. Season with salt and pepper and cook for 5–6 minutes, stirring occasionally, until softened.
Add garlic, Italian seasoning, smoked paprika, and red pepper flakes. Cook for 1 minute, stirring until fragrant.
Add whole tomatoes and lightly crush them with a wooden spoon or potato masher.
Add vegetable stock, bay leaf, and lentils. Stir to combine and bring to a boil.
Reduce heat to medium-low, partially cover, and simmer for 25–30 minutes, or until lentils are tender but still hold their shape.
Remove and discard the bay leaf. Stir in baby spinach and cook for 2–3 minutes, until wilted.
Taste and adjust salt and pepper as needed.
Serve topped with fresh parsley and grated Parmesan.