In medium saucepan, heat 1 tablespoon lard or vegetable oil. Cook onion over medium high heat for a few minutes or until it starts to brown on the edges.
Add garlic and cook for another minute. Add tomatoes and cook for 5 minutes, or until they become saucy.
Transfer mixture to blender container and add beans and their broth. Blend until completely smooth, adding more bean broth or water if needed to make mixture blend properly.
In same saucepan, cook bean mixture over medium heat, adding epazote, ancho chile powder and salt. Bring to a boil and then turn heat down to simmer and cook, uncovered, for 10 minutes, to allow flavors to blend.
Add evaporated milk and simmer for 5 minutes more. Taste for seasoning and add more salt if needed.
To serve, ladle soup into shallow bowls and garnish with avocado, cheese, bacon or chicharrón and a drizzle of crema on top.