Sweat the aromatics: Heat oil in a large skillet over medium. Add sliced onion with a pinch of salt and cook until soft and lightly golden, 6–8 minutes.
Stir in garlic and cook 30 seconds.
Build the sauce: Add tomatoes, chipotle peppers, adobo sauce, oregano, cumin, and a few grinds of pepper. Cook, stirring, until tomatoes break down and get jammy, 6–8 minutes.
Blend (optional but recommended): For a smoother tinga, transfer the tomato-onion mixture to a blender with 1/2 cup broth. Blend until smooth.
Return to the skillet. If you prefer rustic, skip blending and just add broth to the pan.
Simmer and season: Add the bay leaf (if using). Simmer 5 minutes, adjusting thickness with more broth as needed.
Taste and season with salt and more chipotle/adobo for heat.
Add the chicken: Stir in shredded chicken and simmer 3–5 minutes, until hot and saucy but not soupy. Remove the bay leaf. The mixture should cling to the chicken.
Warm the tostadas: If using store-bought shells, warm them in a 350°F (175°C) oven for 3–5 minutes to re-crisp.
For homemade, lightly brush corn tortillas with oil and bake at 400°F (200°C) until crisp, 6–10 minutes, flipping once.
Assemble: Spread a thin layer of crema on each tostada if you like, then add a generous scoop of chicken tinga. Top with lettuce or cabbage, radishes, avocado, queso, cilantro, and a squeeze of lime.
Serve immediately: Tostadas are best eaten right away so the shells stay crisp.