The historical trail
Iranica describes both bone-in and boneless chicken within Iranian kebab cooking and notes that kebab names, methods, and seasonings vary among cookbooks.
Persian chicken kebab
جوجهکباب
Saffron, lemon, and yogurt chicken skewers with grilled tomatoes
Boneless chicken thighs spend several hours in a fragrant saffron, onion, lemon, and yogurt marinade, then cook over a steady outdoor grill. Small, even pieces and a thermometer give you a golden surface and a juicy, fully cooked center.

Watch the cooking film
Natural kitchen ambience accompanies this short film. Use the player controls to enable sound.
Across time and place
Joojeh kabab belongs to Iran's wide family of kebabs and can be made with bone-in or boneless chicken. This boneless home version uses yogurt; it is one style of marinade, not a requirement shared by every cook. Serve with the tomatoes and separately prepared rice or bread if desired.
Across Iran
The marker indicates a broad Iranian culinary tradition—not a proven point of invention.
Iranica describes both bone-in and boneless chicken within Iranian kebab cooking and notes that kebab names, methods, and seasonings vary among cookbooks.
Its documented context is Iran's widespread kebab tradition. Omid Roustaei's contemporary recipe provides an authored example of saffron, citrus, onion, and yogurt used with chicken.
Before you begin
Every ingredient includes U.S. and metric quantities, buying guidance, preparation, and a practical substitution.

Why it mattersThigh meat stays moist during grilling and tolerates small variations in heat.
ChooseBuy chilled chicken with intact packaging and use or freeze within 1–2 days of purchase, following any shorter label date.
PrepareDo not wash raw chicken. Trim loose fat and cut into even 1 1/2-inch (4 cm) pieces; keep refrigerated while preparing the marinade.
SubstituteUse the same weight of breast cut to the same thickness. Start checking sooner and still cook every piece to 165°F (74°C). Bone-in pieces need a different timing plan.
AllergenPlain chicken adds no common major allergen; injected or seasoned products may contain additional ingredients.
Why it mattersYogurt coats the chicken and gives the marinade body and mild acidity.
ChooseChoose unsweetened, unflavored yogurt made from pasteurized milk.
PrepareWhisk smooth before combining. If using very thick strained yogurt, loosen with 1 tablespoon (15 mL) water.
SubstituteFor a dairy-free variation, use 1/2 cup (120 g) plain unsweetened plant yogurt that suits your allergies; flavor and browning will differ.
AllergenContains milk. Plant-based substitutes may contain soy, tree nuts, or other allergens.
Why it mattersSaffron supplies the characteristic floral aroma and golden color.
ChooseBuy genuine red threads from a reliable food supplier; avoid color powders sold as saffron.
PrepareGrind finely and steep in the measured warm water for 10 minutes; let cool before adding to chicken.
SubstituteThere is no equivalent aroma substitute. Omit for a lemon-yogurt chicken variation rather than increasing turmeric to imitate saffron.
AllergenPure saffron has no common major allergen; check blends and cross-contact.
Why it mattersWater disperses the saffron through the marinade.
ChooseUse potable water, warm rather than boiling.
PreparePour over the ground saffron and cool the infusion before use.
SubstituteAn ice cube melting onto ground saffron also works; let it melt fully and measure the liquid.
AllergenWater adds no food allergen.
Why it mattersOnion adds a savory sweetness during the refrigerated marination.
ChooseChoose a firm onion without soft or moldy areas.
PreparePeel, halve, and slice thinly. Remove onion pieces from chicken before grilling so they do not burn.
SubstituteWhite onion works at the same weight.
AllergenNo common major allergen; individual allium sensitivity is possible.
Why it mattersLemon gives a clean tart edge to the yogurt and saffron.
ChooseChoose juicy lemons with sound skin; avoid sweetened lemon drinks.
PrepareSqueeze and strain out seeds before measuring.
SubstituteUse fresh lime juice in the same amount. Avoid increasing the acid or extending the suggested marination.
AllergenCitrus is not a common major allergen but individual allergy is possible; bottled juice can include sulfites.
Why it mattersOil helps the marinade coat the chicken and lightly coats the tomatoes.
ChooseUse a plain oil suitable for grilling, such as canola.
PrepareMix 2 tablespoons (30 mL) into the marinade; keep 1 tablespoon (15 mL) separately for the tomatoes.
SubstituteA mild refined olive oil suitable for the cooking temperature can be used.
AllergenSelect an oil suited to diners' allergies; butter would add milk.
Why it mattersSalt seasons both the chicken and the separate tomatoes.
ChooseUse plain fine salt; weigh coarse salt rather than substituting by spoon volume.
PrepareUse 1 1/4 teaspoons (7.5 g) in the marinade and 1/4 teaspoon (1.5 g) on the tomatoes.
SubstituteReduce if using chicken already injected with a salted solution.
AllergenPlain salt has no common major allergen.
Why it mattersA little pepper adds warmth without masking saffron.
ChooseUse fragrant ground black pepper.
PrepareWhisk into the yogurt marinade.
SubstituteReduce or omit for a milder dish.
AllergenCheck blended seasonings for additional allergens.
Why it mattersGrilled tomatoes provide a juicy, tart contrast to the chicken.
ChooseChoose evenly sized tomatoes that are ripe but not collapsing.
PrepareWash, dry, halve through the stem, and remove the hard core. Keep away from raw-chicken utensils.
SubstituteUse firm plum tomatoes by weight or omit the accompaniment; do not thread tomatoes between chicken pieces.
AllergenNo common major allergen; individual tomato allergy is possible.
Step by step
Grind saffron and steep in 2 tablespoons (30 mL) warm water for 10 minutes, then let it cool. Meanwhile, cut the unwashed chicken into even 1 1/2-inch (4 cm) pieces on a dedicated board. Place in a nonreactive bowl in the refrigerator; wash hands, knife, and board with hot soapy water after handling raw chicken.
Whisk yogurt, cooled saffron liquid, lemon juice, 2 tablespoons (30 mL) oil, 1 1/4 teaspoons (7.5 g) salt, and pepper. Add sliced onion and chicken and coat thoroughly. Cover and refrigerate at 40°F (4°C) or below for 4–12 hours. Marination time counts toward the chicken's total refrigerated storage time; never marinate on the counter.
Prepare a medium-high grill, about 400–450°F (200–230°C), with a cooler zone and a clean grate. Keep the grill outdoors, away from enclosed areas. Lift chicken from the marinade, remove clinging onion, and let thick excess yogurt drip away. Thread onto 6–8 flat metal skewers without compressing the pieces. Discard all used marinade and onion. Keep threaded chicken chilled if the grill is not ready.
Brush tomato halves with the reserved tablespoon (15 mL) oil and season with the remaining salt. Grill them separately, cut-side down first, for about 8–12 minutes, turning once with clean tongs. Grill chicken for about 12–18 minutes, turning every 3–4 minutes. Move skewers to the cooler zone if yogurt or juices cause flare-ups; do not let flames blacken the surface.
Insert a clean instant-read thermometer sideways into the thickest chicken pieces without touching metal. Check several skewers and continue cooking until every tested piece reaches at least 165°F (74°C). Put finished chicken on a clean platter using clean tongs, never on the raw-chicken tray. Remove the tomatoes when tender but still holding their shape.
Rest the cooked chicken for 5 minutes under a loose cover. Slide it from the hot skewers with tongs, taking care around sharp tips, and serve with the tomatoes. If serving rice or bread, prepare it separately and account for its allergens and storage needs.
Refrigerate cooked chicken and tomatoes in shallow covered containers within 2 hours, or within 1 hour above 90°F (32°C). Keep at 40°F (4°C) or below and use within 3–4 days. Freeze cooked chicken for up to 2 months for best quality; tomato texture softens after freezing. Store separately cooked rice under its shorter rice-specific guidance.
Remove metal skewers. Reheat only the portion needed in a covered skillet with a spoonful of water, turning occasionally, until the chicken reaches 165°F (74°C) throughout. A microwave-safe covered dish also works; rotate and check several pieces for cold spots. Thaw frozen portions in the refrigerator first.
Food safety
Do not wash raw chicken. Marinate only under refrigeration, discard used marinade, prevent raw-poultry cross-contact, and verify 165°F (74°C) in thick pieces. Never use charcoal or an outdoor grill indoors, in a garage, or in an enclosed balcony; ventilation alone does not prevent carbon monoxide poisoning. Keep children clear of hot skewers and flames.
Good to know
No. Marinades vary. This recipe is specifically a yogurt, lemon, onion, and saffron version; yogurt is not presented as the only authentic approach.
Yes: 8–12 hours in the refrigerator fits this recipe. Do not leave it at room temperature, and count this time within the chicken's overall 1–2-day refrigerated storage window.
The heat may be too strong, the pieces too large, or the yogurt coating too thick. Move the skewer to the cooler zone, turn regularly, and continue to 165°F (74°C). Use smaller, even pieces next time.
Discard the marinade that touched raw chicken for this recipe. If you want a serving sauce, prepare a separate clean yogurt sauce before handling the chicken and keep it refrigerated.
No. Saffron colors the meat before it cooks, and grill browning happens outside first. Use a thermometer and verify at least 165°F (74°C) in several thick pieces.
Cooked by you
Share a photo of your dish and a note about how the recipe went. Every submission is reviewed before public display, and submission does not guarantee publication.