Heat coconut oil in a large high-sided skillet over medium heat. Add minced onion and reduce heat to just below medium. Season with salt and pepper. Cook, stirring occasionally, until onions are light golden brown, 15-20 minutes. Don’t rush this step. The onions are building your flavor base.
While onions cook, combine coconut milk and tomatoes in a blender or food processor. Pulse until just combined with small tomato chunks still visible. Set aside.
Once onions are golden, add ginger and garlic to skillet. Stir to combine. Sprinkle curry powder, chili powder, and cinnamon over the top. Season with additional salt and pepper. Stir and cook for 1-2 minutes until very fragrant and a thick paste forms.
Pour coconut milk and tomato mixture into skillet. Scrape up any browned bits from the bottom. Stir until sauce is a rich golden color and the aromatic paste is fully incorporated.
Bring sauce to a gentle simmer. Season fish fillets with salt and pepper and nestle into the sauce. Cover and cook for 5 minutes.
Carefully flip fish fillets. Cover and continue cooking 3-5 more minutes until fish is cooked through and flakes easily with a fork.
Remove from heat. Stir in fresh lime juice and chopped cilantro. Taste and adjust seasonings.
Serve immediately over basmati rice with lime wedges on the side.