
Puerto Rican Arroz con Gandules Bowl with Pernil
A vibrant, aromatic Puerto Rican rice bowl featuring fluffy long-grain rice cooked with pigeon peas, infused with the savory-herbaceous fragrance of sofrito and annatto, then topped with warm sliced roasted pork. The combination of tender rice, earthy peas, briny olives, and juicy pernil captures the warm, savory comfort that defines Puerto Rican home cooking.
- Prep
- 15 min
- Cook
- 30 min
- Wait
- 25 min
- Total
- 1 hr 10 min
- Makes
- 4 servings (1½ cups rice per bowl with pork)
Steps
Before you start
- If using pernil from a Latin market or homemade (made ahead), have it ready to warm and slice.
- Measure and prep all ingredients before you start cooking (mise en place)—the cooking moves quickly once you begin.
- Use long-grain white rice (jasmine or basmati work well), not short-grain or arborio, for the best texture.
- Annatto seeds (achiote) and pigeon peas are available at Latin markets, specialty grocers, or online; they keep well in cool, dark storage for months.
Prepare sofrito base
- Roughly chop the cilantro, onion, bell pepper, and garlic cloves.
- Place in a food processor and pulse until a fine, wet paste forms (about 3–4 minutes of pulsing).
- Alternatively, mince very finely by hand on a cutting board—aim for a texture similar to pesto.
- You should have about ½ cup of sofrito.
- Set aside in a small bowl.
+ Show details− Hide details
Ready when: Sofrito is finely processed into a wet, cohesive paste with visible texture
Tip: Sofrito's pungent aroma—a blend of cilantro, garlic, and onion—signals you're ready. Don't over-process to liquid; you want a coarse paste that clings together.
Infuse annatto oil
- Heat 2 tablespoons (30 ml) of the olive oil in a small saucepan over medium heat.
- Add the annatto seeds and stir frequently for 30–45 seconds, until the oil turns a deep golden-orange color and smells slightly earthy.
- Remove from heat.
- Strain the oil through a fine mesh sieve into a small bowl, discarding the seeds (or leaving them in for deeper color).
- Set aside.
+ Show details− Hide details
Ready when: Oil is deep golden-orange and fragrant
Tip: Watch carefully—annatto burns easily and turns bitter if overcooked. The oil should transform to warm orange in 30–45 seconds; any longer diminishes the flavor.
Sauté sofrito and toast rice
- Heat the remaining 2 tablespoons (30 ml) olive oil in a large saucepan or Dutch oven (3–4 quart / 3–4 liter capacity) over medium heat.
- Add the sofrito and cook, stirring often, for 3–4 minutes until fragrant and the oil visibly separates from the vegetables.
- This mellows the raw edge of the onion and garlic.
- Add the uncooked rice and stir constantly for about 2 minutes.
- The rice grains should become coated with the sofrito oil and smell lightly toasty.
- This blooming-and-toasting step adds depth and nutty flavor to the finished dish.
+ Show details− Hide details
Ready when: Sofrito is fragrant with oil separating visibly from vegetables; rice is coated and smells toasty
Tip: Stir constantly to prevent sticking and ensure even coating. If sofrito browns too fast, reduce heat slightly and stir more frequently.
Add broth and bring to boil
- Pour the chicken broth into the saucepan and add the annatto oil and bay leaf (if using).
- Stir well to combine, scraping up any browned bits from the bottom of the pan.
- Bring to a boil over medium-high heat, stirring occasionally—this should take 3–4 minutes.
- The rice will sink toward the bottom of the pan as the liquid heats.
+ Show details− Hide details
Ready when: Broth is at a rolling boil
Add peas and flavorings
- Reduce heat to medium.
- Add the drained pigeon peas, sliced green olives, and capers to the saucepan.
- Stir gently to distribute throughout.
- Taste a small spoon of the liquid (carefully, it's hot) and season with salt and black pepper as needed.
- Remember that olives and capers are quite salty, so add salt gradually—taste first.
- The liquid should return to a gentle simmer.
+ Show details− Hide details
Ready when: Liquid is at a gentle simmer, peas and olives are evenly distributed
Tip: Taste the broth carefully before adding more salt—the pernil you'll serve on top also brings salt, so underseasoning now is better than over-salting.
Braise rice until tender
- Reduce heat to low.
- Cover the saucepan with a tight-fitting lid.
- Braise for 18–20 minutes without lifting the lid or stirring.
- The rice absorbs the broth and develops a light, crispy layer called socarrat on the very bottom.
- At the 18-minute mark, carefully lift the lid and check: rice should be tender with no crunchy center when bitten.
- If still firm, add ¼ cup (60 ml) more broth, cover, and cook 2–3 minutes longer.
+ Show details− Hide details
Ready when: Rice is tender with no crunchy center, liquid is absorbed, faint crackling sound from bottom of pan
Tip: Do not stir or lift the lid excessively during cooking—the undisturbed rice-to-broth interaction creates the ideal creamy texture. Stirring releases starch and makes rice mushy.
Rest and finish rice
- Remove from heat and keep covered for 5 minutes.
- This allows final moisture absorption and helps the rice become fluffier.
- Remove the lid and gently fluff the rice with a fork, breaking up any clumps—aim for light, separate grains.
- Taste and adjust seasoning with more salt or pepper if needed.
- For deeper socarrat crust (optional but delicious), place the uncovered saucepan back over medium-high heat for 1–2 minutes until you hear a light crackling sound from the bottom.
- Remove immediately when crackling starts to avoid burning.
+ Show details− Hide details
Ready when: Rice is light and fluffy with separate grains; optional socarrat produces gentle crackling sound
Tip: Use a fork, never a spoon, to fluff rice—spoons crush grains and create a mushy texture. The optional socarrat is treasured in Spanish and Latin cooking for its depth and textural contrast.
Warm and slice pernilOven 350°F / 175°C
- If using pre-cooked pernil (from a Latin market, homemade and chilled, or rotisserie pork), slice it into ¼-inch (6 mm) thick slices.
- Warm gently either in a 350°F (175°C) oven for 5–7 minutes until heated through, or in a skillet over medium heat with 2 tablespoons (30 ml) of broth or water, turning slices halfway through, for 3–4 minutes per side.
- Warm pernil prevents the rice from cooling when assembled on the plate.
+ Show details− Hide details
Ready when: Pernil is heated through and warm to touch, no cold spots
Tip: Don't overheat pernil—it can dry out quickly. Gentle, brief reheating is all you need. If pernil was warm when you started cooking rice, you can skip this step.
Assemble bowls and serve
- Divide the warm arroz con gandules among four serving bowls, plates, or a large platter (about 1½ cups / 360 ml rice per serving).
- Top each portion with warm sliced pernil, arranging the slices neatly on top or alongside the rice.
- If desired, scatter with fresh cilantro and serve with lime wedges on the side.
- A squeeze of fresh lime juice brightens the rich, savory flavors just before eating.
+ Show details− Hide details
Tip: Serve immediately while everything is warm. The heat of the rice keeps the pernil warm and makes each bite cohesive and comforting.
Good to know
Tips
- Sofrito is the soul of Puerto Rican cooking—don't skip this step or use jarred sofrito as a shortcut. Homemade sofrito has vastly superior flavor, aroma, and character.
- Pernil traditionally is slow-roasted until falling apart and shredded, not thinly sliced. For this bowl, thin slices work better to top the rice, so buying pre-cooked rotisserie or Latin-market roasted pork is convenient and still authentic.
- The socarrat (crispy, caramelized rice on the bottom of the pan) is a treasured element of Spanish and Latin rice dishes—many diners fight over who gets the crispiest bits. Develop it boldly if you enjoy the contrast of texture.
- Annatto seeds give arroz con gandules its signature golden-orange hue and subtle, earthy-sweet flavor. There's no perfect substitute, so source it if possible; it keeps in a cool, dark pantry for months.
Make ahead
Pernil can be roasted 2–3 days ahead (if making from scratch) and stored covered in the refrigerator. Reheat in a 325°F (165°C) oven for 15–20 minutes, tented with foil, until warmed through. Arroz con gandules is best eaten fresh; do not refrigerate cooked rice for more than 1 day, as it hardens and requires extra moisture to reheat.
Storage & reheating
Room temperature: Arroz con gandules does not keep well at room temperature; consume within 2 hours. Refrigerator: Store covered for up to 1 day. To reheat, add 2–3 tablespoons (30–45 ml) of broth to the rice, cover, and warm over medium-low heat for 5–7 minutes, stirring gently, until steaming. Pernil keeps covered for 3–4 days; reheat as directed above. Freezer: Not recommended for best texture. If freezing, freeze arroz con gandules and pernil separately for up to 2 months. Thaw in the refrigerator overnight and reheat as directed; rice may be slightly grainy after thawing.
Substitutions
- Pigeon peas (fresh, frozen, or canned) → Canned chickpeas or white beans (1:1 by volume). Both are hearty and absorb flavors well, though they change the traditional flavor profile. Canned kidney beans also work.
- Pimiento-stuffed green olives → Omit or use about ¼ cup chopped roasted red peppers (jarred is fine). This removes the briny flavor and salt but keeps the texture. Red peppers add sweetness instead, creating a different character.
- Fresh cilantro, packed → Fresh parsley (using the same volume). Parsley is milder and earthy; you lose the distinctive cilantro aroma, but sofrito remains flavorful and aromatic.
- Annatto seeds (achiote) → ½ teaspoon turmeric + ¼ teaspoon sweet paprika. This gives warm color and earthiness but not the exact flavor of annatto. Turmeric adds slight bitterness, so use less than you think.
More rice bowls
See all →Find more like this
- Meal
- Dinner
- Cuisine
- Caribbean
- Main ingredient
- Pork ShoulderRice





