Remove the moisture from the tofu blocks by pressing them with paper towels. Then, cut them into bite-sized pieces.
Cut the tomatoes into pieces. Thinly slice the red onion or cut it into wedges. Chop the scallions and cilantro thinly. Alternatively, julienne the scallions with the roots intact.
Add oil to a heated pan. Once the oil is heated (it doesn't have to be smoking hot), place the tofu into the pan, piece by piece.
Fry the tofu over low heat. Gently turn the tofu pieces during cooking. Fry them until golden brown on all sides. Remove the tofu from the pan and set aside.
Heat a little oil and add the red onion. Stir the onion slices briefly. Then, add the tomatoes and stir well.
Pour in water and season the mixture with salt, pepper, ketchup, soy sauce, and oyster sauce. Cook for 2 to 3 minutes to soften the tomatoes and infuse the sauce with the spices.
Add the tofu to the sauce. Stir gently so as not to break the tofu. Cover the pan and cook for 5 minutes (or until the sauce thickens a little) over low heat.
After about 5 minutes, sprinkle the scallions and cilantro on top. Turn off the heat. Transfer the tofu pieces to a plate and sprinkle some ground pepper over them.
Serve them with hot rice. Remember to spoon the sauce over the rice for the best flavor!