In a large skillet, drizzle oil over medium heat. Once heated, add the onion and cinnamon stick. Cook until the onion begins to soften, then mix in the garlic and chilies. Cook until just fragrant and stir in the garam masala, cumin, and turmeric.
Once fragrant, add the tomatoes and cook, stirring occasionally, until the tomatoes start to break down, about 15 minutes. Push in the fish pieces around the tomato mixture to the bottom of the pan and drizzle the lemon juice over the top. Cook for a couple of minutes and flip the fish to the other side. Gently mix in the coconut milk and simmer just until the fish is cooked through, about 5 minutes.
Season to taste with salt and serve immediately with rice and topped with cilantro.