Heat the olive oil in a large skillet over medium heat. Add the onion and garlic and season with salt and black pepper, to taste. Cook, stirring occasionally, until the onion is soft and translucent, approximately 4-5 minutes.
Reduce the heat to medium and add the beans, ground cumin, chili powder, smoked paprika, and crushed red pepper flakes, if using. Cook, stirring occasionally, until the beans are heated through and start to break apart slightly, approximately 4-5 minutes.
Use the back of a spoon to begin to mash the beans in the pot. Stir in the milk. Continue to cook until heated through and the beans are softened about another 4 to 5 minutes.
Remove from the heat and puree the beans with an immersion blender or use a potato masher to mash the beans until almost smooth. Stir in the sour cream.
Serve topped with fresh cilantro, if desired. Enjoy!