Rinse the dried pinto beans thoroughly under running water. Place the beans in a large saucepan and add the water. Bring to a boil over high heat for 2 minutes. Remove from heat, cover, and let the beans soak for 1 hour.
After soaking, drain and rinse the beans again. Return them to the saucepan along with the diced onion, minced garlic, vegetable oil, ground cumin, chili powder, salt, and black pepper.
Heat the mixture over high heat until boiling. Then, lower the heat to a gentle simmer, ensuring it is covered, and let it cook for approximately one hour or until the beans are soft and fully cooked. Stir occasionally to prevent sticking.
Once the beans are fully cooked, remove the lid and continue to simmer over low heat for an additional 15 minutes, stirring occasionally. This will help evaporate excess liquid.
Using a wooden spoon or masher, gently mash the beans until they reach your desired consistency. For a smoother texture, transfer a portion of the beans to a blender or food processor and process until smooth. Return the pureed beans to the saucepan and mix well.
Add the unsalted butter to the beans and stir until it melts, creating a creamy and luscious texture. Continue to cook for another 5 minutes to allow the flavors to meld together.
Remove the saucepan from heat and let the beans cool slightly before serving.