In a large bowl, thoroughly whisk together ⅔ cup coconut milk, 1 teaspoon ground coriander, 1 teaspoon garam masala, ¼ teaspoon chile powder, ¼ teaspoon ground turmeric, ½ teaspoon ground cumin. Whisk in 2 teaspoons grated ginger, 2 teaspoons grated garlic, lime juice, salt, and pepper. Add cubed tofu and toss to evenly coat; set aside.
In a large Dutch oven or cast iron, carbon steel, or nonstick skillet, heat vegetable oil over medium-high until shimmering. Add onion and cook until softened and slightly browned around the edges, about 8 minutes. Add tomato paste and continue to cook, stirring frequently, until tomato paste turns brick red and has thickened slightly, about 2 more minutes.
Add remaining garlic and ginger, and cook until fragrant, stirring occasionally, about 3 minutes. Add remaining ¼ teaspoon chile powder and ½ teaspoon ground cumin powder, and cook until fragrant, 1 to 2 minutes more. Add 1 teaspoon ground coriander, 1 teaspoon garam masala, and tomato sauce. Reduce heat. Stir to combine, reduce heat to low, and let simmer until deep red and thickened, about 20 to 25 minutes.
While the sauce simmers, line a 13- by 18-inch rimmed baking sheet with foil. Thread 8 to 10 pieces of tofu onto wooden or stainless steel skewers and set on foil-lined baking sheet. Repeat with remaining tofu.
Heat broiler to high. Broil, turning halfway through, until corners of tofu are charred and browned, about 10 minutes.
Add remaining coconut milk to sauce and stir to combine. Season with salt to taste. Carefully remove tofu from skewers and add to sauce. Stir to incorporate and then top with roughly chopped cilantro. Serve with rice or naan, if desired.
