Classic Puerto Rican Arroz Con Gandules

When you want a dish that feels like home, Puerto Rican arroz con gandules is hard to beat. It is warm, savory, and full of color. In my opinion, it is pure comfort in a bowl. Even better, it brings people to the table fast, because the smell alone makes everyone hungry.

This classic rice dish starts with frozen gandules, achiote oil, diced ham steak, sofrito, tomato paste, long-grain white rice, pimiento-stuffed olives, and sazón. Then it gets deep flavor from salt, pepper, and a homemade mix of achiote, garlic powder, onion, and cumin. The sofrito, made with onions, ajicitos, green bell peppers, garlic, cilantro, and culantro, gives the rice its heart and soul. As a result, every bite tastes earthy, fragrant, and a little bright from the annatto oil.

The method is simple, too. First, you make the achiote oil, sofrito, and sazón. Then, you simmer the gandules, brown the ham, and build the flavor in one pot before adding the rice and liquid. After that, the rice steams low and slow until tender. So, while this dish has a few homemade parts, none of them are hard, and each one helps create that classic Puerto Rican taste.

This is the kind of meal that works well for Sunday dinner, holiday spreads, and busy weeknights when you want something filling and special. It is also a great choice for potlucks, family reunions, and chilly evenings when comfort food sounds just right. Serve it with pork, chicken, or a simple salad, and you have a meal that feels generous and welcoming.

Why You’ll Love This Classic Puerto Rican Arroz Con Gandules

  • Full of bold flavor: The mix of sofrito, achiote oil, olives, and ham gives the rice a rich, savory taste.
  • Simple enough for home cooks: Even though it tastes special, the steps are easy to follow.
  • Great for family meals: It makes a hearty side dish that pairs well with many main courses.
  • Budget friendly: The ingredients are easy to find, and rice stretches the dish well.
  • Perfect for make-ahead cooking: You can prepare the sofrito, sazón, and even the rice ahead of time.

Gandules Tips

Gandules, also called pigeon peas, are the heart of this dish, so it helps to handle them with care. If you are using frozen gandules, let them simmer just until tender, because they will keep cooking with the rice. Also, do not skip the cooking liquid. It adds flavor and helps season the rice evenly. If you want a softer texture, cook them a minute or two longer, but avoid overcooking them until mushy. That way, your arroz con gandules stays fluffy and the peas hold their shape.

Options for Substitutions

  • No ham steak? Use diced cooked bacon, smoked turkey, or diced cooked pork shoulder for a similar savory taste.
  • No pimiento-stuffed olives? Use sliced green olives, capers, or a mix of both for a briny bite.
  • No frozen gandules? Use canned pigeon peas, but rinse them first and reduce the simmer time so they do not break apart.
  • No culantro? Use extra cilantro. The flavor will be a little lighter, but still very good.
  • No ajicitos? Use one extra small green bell pepper, as the recipe suggests.
  • Need a lower-sodium version? Cut back on the added salt and choose low-sodium ham, olives, and tomato paste if possible.

Watch Out for These Mistakes

One common mistake is overheating the achiote oil. You want it to turn bright orange-red, not dark or bitter. So, keep the heat low and stir the seeds often. If the oil gets too hot, the flavor can turn harsh, and the color may look muddy instead of clean and bright.

Another issue is overprocessing the sofrito. You want it mostly smooth, but not watery. For that reason, pulse it in short bursts. If you blend it too long, the mixture can lose texture and release too much liquid. That can make your rice base less fragrant and a little too thin.

Also, be careful with the rice-to-liquid balance. Long-grain white rice works best here because it stays separate and fluffy. However, if you add too much liquid, the rice can turn soft and sticky. On the other hand, if you add too little, the grains may stay firm in the center. So, measure carefully and keep the lid tight during the steaming stage.

Finally, do not stir the rice too much once it begins to simmer. Stirring can break the grains and make the dish gummy. Instead, let it cook, let it steam, and then fluff it gently at the end. That is the best way to get a beautiful pot of arroz con gandules.

What to Serve With Classic Puerto Rican Arroz Con Gandules?

This Puerto Rican arroz con gandules tastes wonderful with pernil, roasted chicken, or baked pork chops. However, it also pairs nicely with a simple green salad, fried sweet plantains, tostones, or avocado slices. If you want a fuller plate, add a side of beans or a fresh cucumber salad. Together, these sides balance the rice’s savory flavor and make the meal feel complete.

Storage Instructions

Store: Keep leftovers in an airtight container in the refrigerator for up to 4 days.

Freeze: For longer storage, freeze the rice for up to 3 months. For the best texture, cool it first and pack it in flat, freezer-safe containers.

Reheat: On the stovetop, add the rice to a skillet or pot with a splash of water. Cover and heat over low until warm, stirring gently as needed. In the microwave, sprinkle a little water over the rice, cover it loosely, and heat in short bursts until hot.

Recipe Info

  • Preparation Time: 25 minutes
  • Cooking Time: 40 minutes
  • Total Time: 1 hour 5 minutes
  • Level of Difficulty: Easy
  • Servings: 6
  • Calories: 380 kcal per serving

Estimated Nutrition

Estimated nutrition for the whole recipe (without optional ingredients):

  • Calories: 2,200 to 2,400
  • Protein: 45 to 60 g
  • Fat: 75 to 95 g
  • Carbohydrates: 280 to 320 g

Ingredients

  • FOR THE RICE:

    • 1 cup (about 5 oz) frozen gandules (pigeon peas)
    • 2 tbsp achiote oil (recipe below)
    • 1 cup (about 4 oz) diced ham steak
    • 1/2 cup sofrito (recipe below)
    • 2 tbsp tomato paste
    • 2 cups long-grain white rice, rinsed and drained
    • 1/2 cup pimiento-stuffed olives, sliced
    • 2 tsp sazón (recipe below)
    • 1 tsp kosher salt for the gandules, plus 1 tbsp kosher salt for the rice
    • Freshly ground black pepper
  • FOR THE ACHIOTE OIL:

    • 1 cup neutral oil (canola or vegetable)
    • 1/4 cup achiote (annatto) seeds
  • FOR THE SOFRITO (makes about 4 cups; you use 1/2 cup, freeze the rest):

    • 2 medium yellow onions, coarsely chopped
    • 2 cups (about 4 1/2 oz) ajicitos (sweet chili peppers), stemmed, halved and seeded
    • 2 large green bell peppers, stemmed, seeded and coarsely chopped
    • 1/2 cup (about 16) garlic cloves, peeled
    • 1 bunch (about 4 oz) cilantro, with stems
    • 1 bunch (about 2 oz) culantro (recao) leaves
  • FOR THE SAZÓN (makes more than needed):

    • 1 tbsp ground achiote
    • 1 tbsp garlic powder
    • 2 tsp granulated onion
    • 1 tsp ground cumin

Step-by-Step Instructions

Step 1: Make the Achiote Oil

Heat the neutral oil and achiote seeds in a small saucepan over medium-low heat. Stir constantly for 1 to 2 minutes, until the oil turns a bright orange-red color. Then strain out the seeds and let the oil cool. This step gives the arroz con gandules its signature color and a mild, earthy flavor.

Step 2: Make the Sofrito

Working in two batches, pulse the onions, ajicitos, bell peppers, garlic, cilantro, and culantro in a food processor for about 20 seconds per batch. Stop when the mixture is mostly smooth. Measure out 1/2 cup for the rice, then store the rest in the refrigerator for up to 4 days or freeze it for up to 6 months. If ajicitos are hard to find, use one more small green bell pepper instead.

Step 3: Make the Sazón

Whisk the achiote, garlic powder, granulated onion, and cumin together in a small bowl. This simple mix adds color and a warm, seasoned flavor to the rice. You will only need part of it for this recipe, so store the extra in a jar for later.

Step 4: Cook the Gandules and Build the Flavor Base

Simmer the gandules in 2 cups of water with 1 teaspoon of salt, uncovered, for about 10 minutes, until they are just tender. Set them aside with their cooking liquid. Next, heat 2 tablespoons of the achiote oil in a medium Dutch oven or caldero over medium heat. Add the diced ham and cook it for 4 to 5 minutes, until slightly browned. Then stir in the 1/2 cup sofrito and the tomato paste, and cook for about 2 minutes until fragrant.

Step 5: Add the Rice and Cook Until Done

Add the rinsed rice and stir for 1 minute to coat it in the oil and flavor base. After that, add 2 cups of water, the gandules and their liquid, the olives, 2 teaspoons of sazón, 1 tablespoon of salt, and a few grinds of black pepper. Bring everything to a boil. Cook uncovered over medium heat for about 5 minutes, until most of the liquid is absorbed and the top of the rice shows. Then reduce the heat to low, cover tightly, and cook for 20 to 25 minutes until the rice is tender and the liquid is gone.

Step 6: Fluff and Serve

Turn off the heat and let the rice sit for a moment. Then fluff it gently with a fork. Serve the arroz con gandules hot, especially alongside pernil or another roasted meat. If you have leftovers, cool them and store them for later. The dish reheats very well, so it is a smart make-ahead side for busy days.

Conclusion

Classic Puerto Rican arroz con gandules is a dish that brings comfort, color, and deep flavor to the table. With achiote oil, sofrito, ham, olives, and gandules, every bite feels rich and satisfying. Also, the steps are simple enough for home cooks who want a reliable, family-friendly recipe.

If you are looking for a side dish that feels special but still easy to make, this is a wonderful one to try. Make it for Sunday dinner, a holiday meal, or your next gathering, and see how fast it disappears. If you cook it, I would love to hear how it turned out. You can also explore more classic Puerto Rican recipes for your next meal.

Puerto Rican Arroz Con Gandules

A warm, savory, and colorful rice dish featuring frozen gandules, achiote oil, and a homemade sofrito, delivering the rich, classic flavor of Puerto Rican cuisine.
Prep Time 25 minutes
Cook Time 40 minutes
Total Time 1 hour 5 minutes
Servings: 6 servings
Course: Main Course, Side Dish
Cuisine: Puerto Rican
Calories: 380

Ingredients
  

For the Rice
  • 1 cup frozen gandules (pigeon peas)
  • 2 tbsp achiote oil Refer to the recipe for making achiote oil.
  • 1 cup diced ham steak
  • 1/2 cup sofrito Refer to the recipe for making sofrito.
  • 2 tbsp tomato paste
  • 2 cups long-grain white rice, rinsed and drained
  • 1/2 cup pimiento-stuffed olives, sliced
  • 2 tsp sazón Refer to the recipe for making sazón.
  • 1 tsp kosher salt for the gandules
  • 1 tbsp kosher salt for the rice
  • Freshly ground black pepper
For the Achiote Oil
  • 1 cup neutral oil (canola or vegetable)
  • 1/4 cup achiote (annatto) seeds
For the Sofrito
  • 2 medium yellow onions, coarsely chopped
  • 2 cups ajicitos (sweet chili peppers), stemmed, halved and seeded
  • 2 large green bell peppers, stemmed, seeded and coarsely chopped
  • 1/2 cup garlic cloves, peeled About 16 cloves
  • 1 bunch cilantro, with stems
  • 1 bunch culantro (recao) leaves
For the Sazón
  • 1 tbsp ground achiote
  • 1 tbsp garlic powder
  • 2 tsp granulated onion
  • 1 tsp ground cumin

Method
 

Make the Achiote Oil
  1. Heat the neutral oil and achiote seeds in a small saucepan over medium-low heat. Stir constantly for 1 to 2 minutes, until the oil turns a bright orange-red color. Strain out the seeds and let the oil cool.
Make the Sofrito
  1. Pulse the onions, ajicitos, bell peppers, garlic, cilantro, and culantro in a food processor for about 20 seconds until the mixture is mostly smooth. Measure out 1/2 cup for the rice and store the rest.
Make the Sazón
  1. Whisk together the achiote, garlic powder, granulated onion, and cumin in a small bowl. Store the extra sazón for later use.
Cook the Gandules and Build the Flavor Base
  1. Simmer the gandules in 2 cups of water with 1 teaspoon of salt for about 10 minutes until they are just tender. Set them aside with their cooking liquid.
  2. Heat 2 tablespoons of the achiote oil in a medium Dutch oven or caldero over medium heat. Add the diced ham and cook for 4 to 5 minutes until slightly browned.
  3. Stir in the 1/2 cup sofrito and tomato paste, and cook for about 2 minutes until fragrant.
Add the Rice and Cook Until Done
  1. Add the rinsed rice and stir for 1 minute to coat it in the oil and flavor base.
  2. Add 2 cups of water, the gandules with their liquid, olives, 2 teaspoons of sazón, 1 tablespoon of salt, and black pepper. Bring everything to a boil.
  3. Cook uncovered over medium heat for about 5 minutes, until most of the liquid is absorbed and the rice shows on top. Reduce the heat to low, cover tightly, and cook for 20 to 25 minutes until the rice is tender and the liquid is gone.
Fluff and Serve
  1. Turn off the heat and let the rice sit for a moment. Then fluff it gently with a fork and serve hot.

Notes

Store leftovers in an airtight container in the refrigerator for up to 4 days. For longer storage, freeze the rice for up to 3 months. Reheat with a splash of water.