Rinse pinto beans, remove debris, and soak in water for at least 8 hours or overnight.
Drain and rinse soaked beans.
Heat oil in a large pot over medium heat.
Add onion and cook until soft and translucent.
Stir in garlic and cook for about 30 seconds until fragrant.
Add beans, paprika, smoked paprika, cayenne, onion powder, garlic powder, and black pepper.
Pour in broth and add bay leaf.
Bring to a gentle boil, then reduce to a low simmer.
Cover partially and simmer for 1½–2 hours, stirring occasionally.
Add salt during the last 30 minutes, tasting and adjusting.
Remove bay leaf.
Mash a small portion of beans to thicken if desired and simmer uncovered 5–10 minutes.