In a large pot over medium-high heat, add the oil, then onion and cook, sitting often until onion is soft and translucent.
Add the garlic and cook, stirring for another minute until fragrant.
Add the salt, turmeric, cumin, cinnamon, and cardamom, and stir with the onion and garlic until well combined. Cook for one minute.
Add the tomatoes, broth, lentils, and coconut milk. Bring to a boil, then reduce heat and simmer uncovered about 20 minutes or until lentils are soft.
When lentils are soft, turn off the heat. Add the spinach and let it gently wilt into the soup.
Serve immediately and garnish with a generous squeeze of fresh lime juice.