Sort through the dried beans, removing any stones or debris. Rinse thoroughly until the water runs clear.
Place beans in a large bowl and cover with water by at least 2 inches. Soak overnight or for at least 8 hours. Alternatively, use the quick-soak method: bring beans and water to a boil for 2 minutes, then remove from heat, cover, and let sit for 1 hour.
Drain and rinse the soaked beans.
Heat oil or lard in a large, heavy-bottomed pot over medium heat. Add the quartered onion and sauté for about 5 minutes until softened.
Add the garlic and jalapeño (if using) and cook for another minute until fragrant.
Add the drained beans, broth or water, bay leaves, oregano, cumin, and orange peel (if using). Do not add salt yet.
Bring to a boil, then reduce heat to maintain a gentle simmer. Partially cover the pot and simmer for 1.5 to 2 hours, or until beans are tender but still hold their shape. Check occasionally and add more liquid if needed.
Once beans are tender, add salt, apple cider vinegar, and chopped cilantro. Continue to simmer uncovered for 15-20 minutes to allow the flavors to meld and the liquid to reduce slightly.
For a creamier texture, mash some of the beans against the side of the pot with a wooden spoon.
Remove bay leaves and orange peel before serving. Adjust seasoning if needed.
Serve hot, garnished with fresh cilantro, crumbled cotija cheese, a squeeze of lime, and a dollop of crema or sour cream.
Notes
For spicier beans, leave the seeds in the jalapeño or add a pinch of cayenne pepper. The cooking time can vary depending on the freshness of your dried beans – older beans take longer to soften.