In a large bowl, soak beans in double amount of water for a minimum of two hours.
Drain and rinse beans after they have soaked.
Add beans, onion, garlic, cilantro and water to the Instant Pot and set on high pressure for 40 minutes.
After 40 minutes, set to quick release.
While the Instant Pot is releasing, warm oil in a saucepan on the stovetop over medium high heat. Add in ingredients for the sofrito, except the vinegar. Cook for 2-3 minutes, or until onions begin to soften. Once onions have softened, turn off heat and carefully mix in the vinegar.
Remove lid from the Instant Pot once it has depressurized. Remove the cilantro, onion chunks. (Garlic can stay.)
Drain the beans and it's liquids over a large bowl to reserve the liquids. Return the beans to the Instant Pot and add in the sofrito mix, stir gently and add in about 1 cup of the reserved liquid and set the IP to seal.
Cook on high pressure an additional 20 minutes.
Once the beans have cooked a second time, allow it to release naturally before removing the lid.
Once the lid is removed, stir the beans. Remove most of the extra liquid (leaving about 1/2 cup) and set it to the side.
Using an immersion blender, blend the beans. If the beans are too thick, you can add in some of the reserved liquid until it reaches desired consistency.
Taste for any additional salt and pepper.
Serve with tortilla chips or alongside your favorite Mexican dish.