Heat oven to 425 degrees. Line a baking sheet with parchment paper. (Really)
Cut the tofu into 1-inch-thick slabs. Cut each slab in half to make squares. Line a plate or baking sheet with towels and place tofu on top. Place another layer of towels on the tofu and weigh down with a skillet or cans. Let sit for at least 15 minutes.
While the tofu is draining, make the sauce: Heat the oil in a small pot or skillet over medium-high. Stir in the garlic and let cook until fragrant, about 1 minute. Whisk in ketchup, soy sauce, ½ tablespoon of the chile crisp and the rice vinegar. Set aside to cool for a few minutes.
In a small bowl, mix together the tomatoes, the remaining ½ tablespoon chile crisp and a pinch of salt. Set aside.
Place tofu on one side of the prepared baking sheet and generously brush both sides of the pieces with the sauce.
Add the cabbage and onion to a bowl, sprinkle lightly with salt and toss with ¼ cup sauce. (Reserve remaining sauce for serving.) Spread cabbage-onion mixture on the other side of the baking sheet in an even layer.
Roast tofu and cabbage for about 30 minutes, tossing the cabbage after 15 minutes. The tofu should be lightly golden at the edges and the cabbage tender and bronzed. Drizzle with a little rice vinegar. Taste cabbage and add more salt or sauce, if needed.
To serve, put 1 cup grains in each of 4 bowls. Drizzle the grains with a little of the sauce. Top with tofu, cabbage and spicy tomatoes. Garnish with cilantro and drizzle with remaining sauce. Serve warm or at room temperature.