Heat the olive oil in a large pot over medium heat. Add the onion and cook for 4 minutes until it softens.
Stir in the garlic and ginger. Cook for 1 minute until fragrant.
Add the cumin, turmeric, garam masala, and chili powder. Stir for 30 seconds to toast the spices.
Add the cauliflower florets, red lentils, vegetable broth, and diced tomatoes. Season with salt and black pepper.
Bring the soup to a boil, then reduce the heat to low. Cover and simmer for 20 minutes until the lentils are soft and the cauliflower is tender.
Remove the pot from the heat. Use an immersion blender to partially puree the soup for a thicker texture, leaving some chunks intact.
Ladle into bowls and top with chopped cilantro before serving.