Soak the dried beans overnight in cold water.
Place the beans in a large pot or slow cooker insert. Add the bacon grease, onion and garlic, and cover with water by 2 inches.
Bring to a rolling boil. Let boil for 5 minutes.
Reduce heat to a bare minimum and cover or transfer to the slow cooker base and cover. Cook until beans are barely tender--choose low or high if using the slow cooker based on how long you need. No matter what it is a bit of a crapshoot because so many other factors some into play, like age and size of beans.
When beans are barely tender add the salt and chicken stock base. Continue cooking until the beans are completely tender, about 30 minutes.
Heat the bacon grease in either a large pot (large enough to add the cooked beans) or a skillet if using a slow cooker over medium high heat.
When the bacon grease is hot, add the chopped onions with a pinch of salt. Cook, stirring occasionally, until the onions are translucent, about 10 minutes.
Add the minced garlic. Cook for 2-3 minutes.
Add the 2 tablespoons of red wine vinegar to deglaze the pan.
Add the cumin, Ceylon cinnamon and ground ancho chile powder. Stir and cook, 2-3 minutes.
Either add the beans to the onion mixture, or, if using a slow cooker, add the onion mixture to the beans.
Bring back to a simmer and cover. Cook for 20 minutes.
Puree soup as much as desired. I like to partially puree--if I did not have a stick blender, I would only blend about half the soup.
Taste the soup. Add the minimum amounts of smoked paprika/chipotle, cumin, ancho and red wine vinegar. Taste again and possible add more of any of the above or more salt.
Serve with sour cream and shredded cotija cheese, garnished with cilantro.