Arroz con Gandules: Puerto Rican Rice & Pigeon Peas

Updated November 6, 2026

Total time
1 hr 10 min
prep 20 min · cook 50 min
Serves
6
portions as written

Jump to recipe

Arroz con Gandules: Puerto Rican Rice & Pigeon Peas

Arroz con gandules is the heart of Puerto Rican cooking—a fragrant, golden rice dish simmered with pigeon peas, sofrito, and pork, all in one pot. It’s the dish you’ll find at every holiday table, Sunday family lunch, and impromptu get-together. What makes it work is the layering of flavor: the sofrito and annatto oil build a savory base, while the rice absorbs every drop, coming out fluffy, deeply seasoned, and utterly satisfying.

Ingredients

  • 3 tbsp (45 ml) olive oil or annatto oil (see Tips)
  • 4 oz (115 g) salt pork or bacon, diced (optional, for flavor)
  • 1/2 cup (80 g) finely chopped onion
  • 1/2 cup (75 g) finely chopped green bell pepper
  • 3 cloves garlic, minced
  • 1/4 cup (60 ml) sofrito (store-bought or homemade, see Variations)
  • 2 tbsp (30 g) tomato sauce
  • 1 tsp (5 g) ground cumin
  • 1 tsp (5 g) dried oregano
  • 1 tsp (5 g) salt, plus more to taste
  • 1/2 tsp (2 g) black pepper
  • 1 can (15 oz / 425 g) gandules (pigeon peas), drained and rinsed
  • 2 cups (370 g) medium- or long-grain white rice, rinsed
  • 2 cups (480 ml) water or chicken broth
  • 1 bay leaf
  • 1/4 cup (10 g) chopped fresh cilantro (optional, for garnish)

Instructions

  1. Heat the oil in a large, heavy-bottomed pot or Dutch oven over medium heat. Add the salt pork (if using) and cook, stirring occasionally, until browned and crisp, about 5–7 minutes. Remove the pork bits with a slotted spoon and set aside, leaving the rendered fat in the pot.
  2. Add the onion, bell pepper, and garlic to the pot. Sauté until soft and fragrant, about 3–4 minutes.
  3. Stir in the sofrito and tomato sauce. Cook for 2 minutes, allowing the mixture to darken slightly and become aromatic.
  4. Add the cumin, oregano, salt, and black pepper. Stir to coat the vegetables.
  5. Add the drained gandules and the reserved salt pork (if you set it aside). Stir everything together for 1 minute.
  6. Pour in the rice and stir to coat every grain with the seasoned oil. Cook for 2 minutes, stirring constantly—this toasts the rice and helps keep the grains separate.
  7. Pour in the water or broth, add the bay leaf, and stir once. Bring the liquid to a boil over high heat.
  8. Once boiling, reduce the heat to low, cover the pot tightly, and simmer for 20–25 minutes, or until the liquid is absorbed and the rice is tender. Do not lift the lid during this time.
  9. After 20 minutes, check the rice. If it’s still slightly wet, cover and cook 5 more minutes. If it’s done, remove from heat and let it rest, covered, for 5–10 minutes.
  10. Fluff the rice gently with a fork. Remove the bay leaf. Taste and adjust salt if needed. Garnish with cilantro and serve warm.

Tips

  • Annatto oil (aceite de achiote): To make it, warm 1/2 cup (120 ml) neutral oil with 2 tbsp (15 g) annatto seeds over low heat for 5 minutes, then strain. It gives the rice its signature golden color. If you skip it, the dish will be paler but still tasty.
  • Don’t stir after adding the liquid: Stirring once the broth is in can release starch and make the rice gummy. Let it cook undisturbed.
  • Rice-to-liquid ratio: This recipe uses 2 cups rice to 2 cups liquid. If your rice is older or drier, you may need 1–2 tbsp (15–30 ml) more liquid. If it’s new, use a touch less.
  • Substitute for gandules: If you can’t find pigeon peas, use canned pink beans or pinto beans. They’re not the same, but they’ll still make a delicious rice dish.

Serving Suggestions

Arroz con gandules is a side dish in Puerto Rico, but it’s hearty enough to be a main. Serve it alongside roasted pork (pernil), fried chicken, or grilled fish. It’s also excellent with a simple green salad or fried plantains (tostones or maduros). For a classic combo, pair it with a slice of avocado and a few crispy pork rinds on top.

Variations

  • Homemade sofrito: Blend 1 green bell pepper, 1 onion, 1 head of garlic, 1 bunch of cilantro, and 2 ají dulce peppers (or a habanero for heat) with a splash of olive oil. Store in the fridge for up to a week or freeze in ice cube trays.
  • Vegan version: Omit the salt pork and use olive oil or annatto oil. Use vegetable broth instead of chicken broth. The flavor will be lighter but still satisfying.
  • Spicy kick: Add 1–2 chopped jalapeños or a pinch of crushed red pepper with the sofrito.
  • Baked version: After step 6, transfer the mixture to a baking dish, add the liquid, cover with foil, and bake at 350°F (175°C) for 30–35 minutes, until the liquid is absorbed.

Storage and Reheating

Refrigerate leftovers in an airtight container within 2 hours of cooking. They will keep for 3–4 days. To reheat, sprinkle with a little water or broth, cover, and microwave in 1-minute intervals, stirring between, until hot (165°F/74°C). Alternatively, reheat in a skillet over medium-low heat with a splash of liquid, covered, for 5–7 minutes. You can also freeze arroz con gandules in a freezer-safe bag or container for up to 3 months. Thaw overnight in the fridge before reheating.

Frequently Asked Questions

Can I use brown rice? Yes, but you’ll need to adjust the liquid and time. Use 2 cups (370 g) brown rice and 2 1/2 cups (600 ml) liquid, and cook for 40–45 minutes.

Why is my rice mushy? Mushy rice usually comes from too much liquid or stirring too often. Stick to the ratio and don’t stir after the liquid boils.

Can I make this in a rice cooker? Absolutely. Sauté the sofrito and pork in a skillet, then transfer to the rice cooker with the rice, gandules, and broth. Cook on the regular white rice setting.

What are gandules? Gandules are pigeon peas, a small, beige legume popular in Caribbean cooking. They’re sold canned, dried, or frozen. Canned is easiest and works perfectly here.

Is this dish spicy? Traditionally, it’s not spicy. It’s savory and aromatic. If you want heat, add a chopped habanero or a dash of hot sauce at the table.

Can I use fresh or frozen gandules? Yes. If using fresh or frozen, you’ll need to cook them first until tender (about 20–30 minutes for fresh, 10–15 for frozen) before adding to the rice.

Related

More recipes to cook

Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes

Spotted an error? Tell us and we will correct it (corrections policy).