Rinse the meat with cold water, pat dry it and then cut it into chunks. Place it in a large pot. Add the onion, garlic, the bay leaves and a tablespoon of salt.
Bring to a boil and cook over medium heat for about 1 hour. Skim off any foam that rises to the surface.
While the meat is cooking, prepare the vegetables: Wash and peel them, then cut them into chunks. Reserve.
PREPARE THE SAUCE
Place the tomatoes in a pot with plenty of water, bring to a boil and as soon as it boils, turn off the heat and add the guajillo and ancho chillies. Let it sit in the hot water for 20 minutes or until the water is just warm.
Open the chilies in half, discard the seeds and the stem and put in a blender together with the tomatoes, garlic and onion. Add a cup of the water where the chiles soaked and blend for 4 minutes at maximum speed. Strain the sauce.
Add the sauce and epazote to the pot where the meat is cooking. Keep cooking at medium heat for one more hour. Check the meat, it should be very tender before the next step (See notes).
Add the vegetables and if necessary, more water so that all the ingredients are well covered in the broth. Boil everything over medium heat until the vegetables are tender. Add salt to taste and turn off the heat.
Serve with chopped onion and green chilies, a squeeze of lemon (lime) and corn tortillas.
The cooking time will depend on the type of meat you are using, so sometimes it is necessary to leave cooking between two and three hours.
You can test the meat by inserting a fork in a piece, if you see that there is a lot of resistance the meat still lacks cooking, if on the contrary the fork is easily inserted, the meat is ready.
Some people replace Xoconostle with tomatillo to give a lightly sour taste to the stew. Added them chopped with the other vegetables if you find fresh tomatillo where you live.