Creamy, restaurant-style homemade refried beans made with dried pinto beans, a little milk, and a generous pinch of salt. So much better than anything out of a can.
Rinse the beans under cool water and pick through to remove any small stones or shriveled beans.
Place the beans in a large pot with the water, onion, garlic, and a generous pinch of salt. Bring to a boil, then lower the heat to a simmer. Cover and cook for about 2½ hours, until the beans are very soft and just starting to break open. Cooking time may vary.
Drain the beans, reserving about 1 cup of cooking liquid. Discard the onion and garlic, then return the beans to the pot over low heat.
Add ¼ cup of water and another pinch of salt. Mash with a potato masher, slowly pouring in the milk as you go, until the beans reach your preferred consistency. For a smoother texture, use an immersion blender.
Taste and add more salt as needed. Serve warm with your favorite toppings.
Notes
Season the water generously. Beans absorb salt as they simmer, so don't hold back on salting the cooking water. This is the single biggest thing that makes them taste great.
For chunky or smooth beans. Stick with a potato masher or fork for chunky. Use a handheld mixer or immersion blender for smooth and creamy. Add a splash of the reserved cooking liquid or more milk if they thicken up too much.
Restaurant-style finish. Right before serving, stir in a splash of reserved cooking liquid, a pat of butter, and a pinch of cumin for extra flavor.
Dairy-free swap. Use water, the reserved bean cooking liquid, or vegetable broth in place of the milk.
Canned bean shortcut. Use 2-3 cans of pinto beans, drained and rinsed, in place of the dried. Skip the long simmer and go straight to mashing.
Storage. Store cooled beans in an airtight container in the fridge for 3-4 days, or freeze for up to 8 months. Reheat on the stovetop over low heat with a splash of milk, stirring often.