Make the tomato or tomatillo sauce. Spread out the tomatoes or tomatillos, the chiles and the onion onto a rimmed baking sheet and roast under a preheated broiler until blackening and soft on one side (about 6 minutes), then flip everything over and roast on the other side. If using serrano chiles, they may be blackened and soft long before the tomatoes are ready. Cool and, if using tomatoes, slip off their blackened skins. Scrape everything (including any juices) into a blender or food processor and process until nearly smooth (a little texture preserves the beautiful homemade quality of the sauce). Heat the oil in a very large (12-inch) heavy skillet over medium-high. When hot enough to make a drop of the puree sizzle sharply, add it all at once and cook, stirring almost constantly, until darker and considerably thicker, about 8 minutes. Stir in the chicken broth, then simmer for several minutes.
Taste and season with salt, usually about 1 ½ teaspoons, and stir in the epazote or cilantro. Remove from the heat.
Or make the red chile sauce. Heat a very large (12-inch) heavy skillet over medium. When hot, toast the chile pieces a few a time, pressing them against the hot surface with a metal spatula until they release their aroma and change color slightly, then flip and toast the other side. Collect the toasted chile pieces in a bowl, cover with hot tap water, weight with a plate to keep them submerged, and let rehydrate for 20 or 30 minutes.
Meanwhile, spread the tomatoes and garlic on a rimmed baking sheet and roast close up under a preheated broiler until the tomatoes are blackened and softening on one side, about 6 minutes, then flip them and the garlic and roast the other side. If the garlic cloves are small and feel soft after the first 6 minutes or so, remove them. Cool until handleable, then pull the skins from both tomatoes and garlic. Drain the chiles and scoop into a blender jar with the tomatoes and garlic. Blend until smooth. Press through a strainer into a bowl.
Return the skillet to medium-high heat and add the oil. When hot enough to make a drop of the puree sizzle sharply, add it all at once and cook, stirring almost constantly, until nearly as thick as tomato paste, 5 to 8 minutes. Stir in the chicken broth, then simmer for a few minutes to bring the flavors together. Taste and season with salt, usually about 1 ½ teaspoons, and stir in the epazote or cilantro. Remove from the heat.
The tortillas. If the tortillas seem moist, it’s best to lay them out in a single layer to dry for a few minutes; otherwise they risk absorbing a lot of oil. In a deep heavy skillet, heat the oil over medium-high. When hot enough to make a piece of tortilla sizzle sharply (360 degrees), fry the tortillas wedges or strips in batches until most of the bubbling has stopped, 2 to 3 minutes. Use a spider skimmer, slotted spoon or tongs to transfer them to a tray lined with paper towels. If using store-bought chips, measure them out and set aside.
The optional protein and the garnishes. Set out the ingredients you are using next to the stove. Chilaquiles cook quickly and should be served right away.
Finish the chilaquiles. You need 4 to 4 1/2 cups of soupy sauce in the very large skillet to make chilaquiles the way I like them (meaning with enough sauce to pool around the finished dish). If you have more, simmer it until reduced to that quantity; if you’re lacking, add water or more broth. Bring to a full boil over medium-high heat, then add the chips (and shredded meat, if using) and stir until all are coated with sauce. Turn off the heat, cover and let stand 1 ½ to 4 minutes, until the tortillas have softened to your liking. Gently stir everything together, then scoop into deep plates. Drizzle with the crema, scatter on the onion slices, and sprinkle generously with cheese and extra epazote or cilantro. Slide an egg onto each plate, if that’s what you’ve chosen. You’re ready to serve.
Tortillas: This is the place to use leftover tortillas, ones that have gone stale. It doesn’t matter if, when fried, they’re kind of tough, even a little greasy. But you can make delicious chilaquiles from store-bought chips, too. I’ve had great luck with most of the thick chips made by local tortilla companies. But I’ve also made delicious chilaquiles using Tostitos, which aren’t even made using traditional methods. Just know that some store-bought chips will soften faster than others, so be vigilant. To make chilaquiles for 4 people, you need to crisp-fry 12 6-inch corn tortillas (cut into wedges or strips) or measure out 8 ounces (roughly 8 cups) of good-quality, not-too-thin tortillas chips.
Garnishes: I think of crema, cheese and sliced raw white onion as being essential garnishes. Crema adds luxe, a garnishing cheese adds a pop, and onion adds bold fresh crunch. I’ve called for queso añejo here, but the fresher-tasting fresco cheese could be used, as could crumbled goat cheese or mild feta—personal favorites. In another version, I omit the cream and cheese and gently stir in a cup (sometimes more) of shredded melting cheese when the chips have softened a little. It gives a lusciousness and somehow protects the chips from softening quickly.
Additions: Though in the United States we seem to have locked chilaquiles into the brunch category, serving it with fried eggs, in Mexico it is an everyday almuerzo (that savory, late-morning, lunchy meal between breakfast and the mid-afternoon main meal called comida). And in my experience, it most commonly gets coarse shreds of chicken stirred in. Blanched greens or roasted vegetables can go in with the chips, too. Cooked chorizo sausage can replace other meats, though I’d sprinkle it over the chilaquiles before sprinkling on the cheese. Diced avocado can be delicious as one of the garnishes, and you can easily replace the white onion on top with the chopped green onions or even grilled onion (green, knob or red) to great effect.
Speedy chilaquiles: Heat a 16-ounce jar of salsa (roasted tomatillo salsa is my go-to) with 2 to 2 ½ cups of chicken broth. Stir in 8 ounces of chips, let stand for a few minutes, then garnish and serve.