If you grew up in a house where beans cooked on the stove from morning till noon, you’ll instantly know the smell I mean. For me, Puerto Rican rice and beans (arroz con habichuelas!) isn’t just food—it’s a whole experience. My Abuela’s kitchen always had that delicious, tomatoey aroma going, and even my friend who “doesn’t like beans” had to admit it was amazing (after some, let’s call it, enthusiastic persuasion from my mom). There’s a comfort in the simmering, the stirring, the occasional splatter that lands on your favorite shirt—hey, all in the name of flavor, right? This is the recipe I’ve messed with a little but mostly guarded like a secret weapon for cozy evenings or those weekends when I’m just missing home.
Why I Keep Coming Back to This Dish…
I make this when I’ve got hungry people on my hands or when I need something that tastes like a hug in a bowl (especially if I’ve had one of those disaster Mondays). My family goes bananas for it—sometimes there’s not even enough left for next-day snacks, though honestly, I think the flavors get even better after sitting overnight. Also, there’s this tiny satisfaction when my picky cousin asks for seconds, which, frankly, is like winning a medal. And if you want leftovers for work, well, you might have to stash a bowl at the back of the fridge and call dibs early.
What You’ll Need (and a Few Thoughts on Swaps)
- For the beans:
- 1 pound dry pinto or pink beans, sorted and damaged beans removed (about 2 cups dried beans), soaked overnight for 6-8 hours, no longer (I’ve tried black beans once—didn’t love it, but maybe that’s just me)
- 6-8 cups water or vegetarian broth
- 1-2 bay leaves (my friend says one is enough; I always go with two because why not)
- For the sofrito (for the beans):
- 2 teaspoons olive oil (I sometimes substitute avocado oil if I’m out—it works fine)
- ½ cup finely diced yellow onion
- ½ cup finely diced green bell pepper
- ¼ cup finely diced cilantro (my aunt uses parsley but… that’s a hard pass from me)
- 3 cloves garlic, minced
- 1 cup no salt added tomato sauce (from one 15 oz can — reserve extra sauce for rice)
- 3 teaspoons (2 packets) Sazon Culantro y Achiote* (full honesty, I’ve mixed my own before, but those little packets are so easy when you’re in a rush)
- For the rice:
- 2 teaspoons olive oil
- 1/3 cup finely diced yellow onion
- 1/3 cup finely diced green bell pepper
- ¼ cup finely diced cilantro
- 2 cloves garlic, minced
- ½ cup no salt added tomato sauce
- 3 teaspoons (2 packets) Sazon Culantro y Achiote*
- ⅛ teaspoon adobo (or just a pinch—I’m heavy-handed, but that’s not always smart)
- 1 (15 oz) can Goya Green Pigeon peas** (I’ve tried frozen, but the canned ones are just convenient!)
- 3 cups water
- 2 cups basmati white rice (if my local store is out, long grain white works in a pinch)
Alright, Here’s What To Do (and What To Watch Out For)
- Get those beans soaking! Chuck your sorted pinto or pink beans into a big ol’ bowl, cover them with 6-8 cups of water or broth (you want about an inch of liquid over the top), and toss in the bay leaf. Let them soak at room temp for 6-8 hours, but no longer—there’s a fine line between perfectly plump and falling apart. I try to set a timer, because I *will* forget these if left to my own devices.
- Cook the beans. Drain off any weird water if you want, add fresh water/broth if necessary, bring the beans (with the bay leaf) to a boil in a large pot. After a quick 1-2 minute boil, knock the heat down low, cover, and let them gently cook for 1-2 hours. You’re looking for them to get soft and creamy but not explode into mush. Once they’re there, fish out and ditch the bay leaf—but don’t dump out that lovely bean liquid! That’s the good stuff. (And no, you don’t need to drain.)
- Let’s make sofrito for the beans. In a medium skillet, heat up 2 teaspoons olive oil over medium heat. Add the diced onions, green peppers, cilantro, and garlic. Sauté it all until your house smells amazing, onions get soft, and the peppers relax (about 3-5 minutes). Lower the heat, stir in 1 cup tomato sauce and 3 teaspoons sazon. Let it simmer for another 2-3 minutes until everything looks like a cozy, slightly thick sauce. (This is where I usually sneak a taste, just to be sure…)
- Merge sofrito and beans. Pour your sofrito right into the pot with the beans (liquid and all—that’s the trick to the classic texture). Simmer uncovered over low-medium heat for about 20-30 minutes so the flavors really get to know each other. Stir now and then. When you’re done, turn off the heat and put a lid on to keep them warm while you move on. They’ll stay hot for ages. (Just don’t forget and let them burn—I won’t say how many times I’ve done that!)
- Time for rice! In a medium pot, heat 2 teaspoons olive oil over medium. In go your onion, green pepper, cilantro, and garlic. Sauté until they’re softened and starting to give up their juices, 3-5 minutes. Lower the heat; add ½ cup tomato sauce, more sazon, and adobo. Let it all bubble together for 2 minutes, stirring so nothing sticks. Next, tip in the whole can of pigeon peas, liquid included—promise me you won’t drain them. Pour in 3 cups of water. Crank up the heat to bring it to a rolling boil.
- Add and cook the rice. Once it’s boiling, stir in 2 cups of washed basmati rice, cover the pot, and drop the heat way down. Rice likes low and slow. Set your timer for 20 minutes and, for the love of all things fluffy, try not to peek too much or you’ll mess with the steam. When the time’s up, give it a little stir—if there’s still some liquid, just cover and give it a few more minutes.
- Finish up. Check the rice and beans for seasoning—if they need a bit more salt or adobo, go for it now. No shame in tasting a spoonful (or three) here.
- Serve it up your way. Scoop rice into a bowl, heap the beans over, and don’t skip pouring some of the beany broth on top. Garnish with chopped cilantro, and if you’re an avocado person, a few slices on the side. Sometimes I add hot sauce, sometimes I don’t—it just depends on the mood. Makes about 6 generous servings.
Notes from My Many Attempts
- Soaking beans longer than 8 hours turns them mushy (ask me how I know…)
- If your rice ends up a bit sticky, don’t panic. Letting it sit covered (heat off) for 10 mins fluffs it right up again.
- Sazon packets make life so much easier, but if you’re ever out, look up a basic homemade version: annatto, coriander, cumin, garlic powder, and a pinch of salt.
Tinkering With Variations
- Brown rice works, but takes longer and I’m kind of impatient, so that’s for the particularly health-conscious days.
- Black beans? Tried once. Honestly, I prefer the pinto or pink.
- I added diced ham once for extra flavor, but, uh, not everyone loved it. Cheese on top, though, is surprisingly tasty if you’re feeling rebellious.
Tools and Workarounds
- You really only need a large pot and a good skillet, but if your pots are ancient like mine, just give them a scrub first—burnt bits can ruin the sauce. Don’t sweat it if you don’t own a designated ‘bean pot.’
How To Store It (If There’s Any Left!)
This keeps just fine in the fridge, in a sealed container, for up to 4 days. Honestly, most times it disappears by the next morning at my place. The bean sauce will thicken up after a night, which I kind of love—great for next-day plantain bowls or even inside tacos.
My Favorite Ways to Serve
I love it most with extra saucy beans over rice, a squeeze of lime, and those velvety avocado slices. Occasionally I’ll serve it alongside roasted plantains or, when I’m feeling fancy, a fried egg on top (totally not traditional, but don’t tell my grandmother). At parties, just set out the whole pot family-style and let folks dig in—it always works.
Things I’ve Messed Up (So You Don’t Have To)
- I once rushed the sofrito and poured in the tomato sauce too soon—don’t. Let your onions really sweat out before adding anything else.
- I once skipped rinsing the rice, thinking “how much starch can there be?” Answer: too much—always rinse!
- And if you burn the rice bottom? Just calmly scrape from the top—scraping up the burnt stuff is just not worth it (save what you can, mate).
FAQ (You Wouldn’t Believe What People Ask Me Sometimes)
Can I freeze the beans? Absolutely—beans freeze like a dream, though the rice gets a tad mushy. Pop the beans in a Tupperware and you’re set for a rainy day.
Do I have to soak the beans? Well, technically no (hello Instant Pot folks), but the texture is much better if you do—the beans just relax more, trust me.
Can I skip cilantro? You can, but it brings so much freshness; without it, the dish is still good but just a little less bright.
Why do you keep saying not to drain the liquids? That bean and pigeon pea juice is where the flavor hides, and you want that saucy consistency. Seriously, don’t let it go down the drain!
Will it work in a rice cooker? Actually, yeah! I tested it once—just plunk everything into the pot after sauteing and set to ‘white rice.’ Easy peasy.
Ingredients
- For the beans:
- 1 pound dry pinto or pink beans, sorted and damaged beans removed (about 2 cups dried beans), soaked overnight for 6-8 hours, no longer
- 6-8 cups water or vegetarian broth
- 1-2 bay leaves
- For the sofrito (for the beans):
- 2 teaspoons olive oil
- ½ cup finely diced yellow onion
- ½ cup finely diced green bell pepper
- ¼ cup finely diced cilantro
- 3 cloves garlic, minced
- 1 cup no salt added tomato sauce (from one 15 oz can — reserve extra sauce for rice)
- 3 teaspoons (2 packets) Sazon Culantro y Achiote* (see note in recipe for how to make your own)
- For the rice:
- 2 teaspoons olive oil
- 1/3 cup finely diced yellow onion
- 1/3 cup finely diced green bell pepper
- ¼ cup finely diced cilantro
- 2 cloves garlic, minced
- ½ cup no salt added tomato sauce
- 3 teaspoons (2 packets) Sazon Culantro y Achiote* (see note in recipe for how to make your own)
- ⅛ teaspoon adobo (or just a pinch)
- 1 (15 oz) can Goya Green Pigeon peas** (see note in recipe for a sub)
- 3 cups water
- 2 cups basmati white rice
Instructions
-
1Get those beans soaking! Chuck your sorted pinto or pink beans into a big ol’ bowl, cover them with 6-8 cups of water or broth (you want about an inch of liquid over the top), and toss in the bay leaf. Let them soak at room temp for 6-8 hours, but no longer—there’s a fine line between perfectly plump and falling apart. I try to set a timer, because I *will* forget these if left to my own devices.
-
2Cook the beans. Drain off any weird water if you want, add fresh water/broth if necessary, bring the beans (with the bay leaf) to a boil in a large pot. After a quick 1-2 minute boil, knock the heat down low, cover, and let them gently cook for 1-2 hours. You’re looking for them to get soft and creamy but not explode into mush. Once they’re there, fish out and ditch the bay leaf—but don’t dump out that lovely bean liquid! That’s the good stuff. (And no, you don’t need to drain.)
-
3Let’s make sofrito for the beans. In a medium skillet, heat up 2 teaspoons olive oil over medium heat. Add the diced onions, green peppers, cilantro, and garlic. Sauté it all until your house smells amazing, onions get soft, and the peppers relax (about 3-5 minutes). Lower the heat, stir in 1 cup tomato sauce and 3 teaspoons sazon. Let it simmer for another 2-3 minutes until everything looks like a cozy, slightly thick sauce. (This is where I usually sneak a taste, just to be sure…)
-
4Merge sofrito and beans. Pour your sofrito right into the pot with the beans (liquid and all—that’s the trick to the classic texture). Simmer uncovered over low-medium heat for about 20-30 minutes so the flavors really get to know each other. Stir now and then. When you’re done, turn off the heat and put a lid on to keep them warm while you move on. They’ll stay hot for ages. (Just don’t forget and let them burn—I won’t say how many times I’ve done that!)
-
5Time for rice! In a medium pot, heat 2 teaspoons olive oil over medium. In go your onion, green pepper, cilantro, and garlic. Sauté until they’re softened and starting to give up their juices, 3-5 minutes. Lower the heat; add ½ cup tomato sauce, more sazon, and adobo. Let it all bubble together for 2 minutes, stirring so nothing sticks. Next, tip in the whole can of pigeon peas, liquid included—promise me you won’t drain them. Pour in 3 cups of water. Crank up the heat to bring it to a rolling boil.
-
6Add and cook the rice. Once it’s boiling, stir in 2 cups of washed basmati rice, cover the pot, and drop the heat way down. Rice likes low and slow. Set your timer for 20 minutes and, for the love of all things fluffy, try not to peek too much or you’ll mess with the steam. When the time’s up, give it a little stir—if there’s still some liquid, just cover and give it a few more minutes.
-
7Finish up. Check the rice and beans for seasoning—if they need a bit more salt or adobo, go for it now. No shame in tasting a spoonful (or three) here.
-
8Serve it up your way. Scoop rice into a bowl, heap the beans over, and don’t skip pouring some of the beany broth on top. Garnish with chopped cilantro, and if you’re an avocado person, a few slices on the side. Sometimes I add hot sauce, sometimes I don’t—it just depends on the mood. Makes about 6 generous servings.
Approximate Information for One Serving
Nutrition Disclaimers
Number of total servings shown is approximate. Actual number of servings will depend on your preferred portion sizes.
Nutritional values shown are general guidelines and reflect information for 1 serving using the ingredients listed, not including any optional ingredients. Actual macros may vary slightly depending on specific brands and types of ingredients used.
To determine the weight of one serving, prepare the recipe as instructed. Weigh the finished recipe, then divide the weight of the finished recipe (not including the weight of the container the food is in) by the desired number of servings. Result will be the weight of one serving.
Did you make this recipe?
Please consider Pinning it!