Finely dice the onions. Mince the garlic and grate the ginger. Slice the green onions and set aside for garnish.
In a small bowl, combine the garam masala, cumin, coriander, and turmeric. Set aside.
Heat ½ tablespoon of the oil in a large saucepan over medium heat. Add the onions and cook for about 4–5 minutes until soft and translucent. Add the garlic, ginger, sugar, and spice mix. Cook for another 1 minute, stirring to bloom the spices.
Add the diced tomatoes (with their juice) to the saucepan. Stir and bring to a gentle simmer. Let it simmer while you prepare the tofu.
Break the tofu into 2 cm chunks with your hands. Place in a large bowl and toss with the cornstarch until well coated.
Heat the remaining 2½ tablespoons of oil in a medium frying pan over high heat. Once hot, fry the tofu in batches until golden and crispy, about 4–6 minutes. Transfer to a paper towel-lined plate to drain excess oil.
Stir the coconut milk into the tomato-spice mixture. Let it heat through, then taste and season with salt as needed.
Add the crispy tofu and half of the sliced green onions into the sauce. Stir gently to coat the tofu.
Spoon over cooked white rice and top with extra green onion if desired.