Love this? Save it for later!
Share the inspiration with your friends
I was standing in front of the fish counter at my local market, completely stuck. The label said “John Dory” and underneath it, in smaller letters, “St. Pierre.” I’d seen it on fancy restaurant menus and always wondered what the fuss was about. The fishmonger—an older guy with a no-nonsense apron—caught me staring. “First time?” he asked. I nodded. “Pan-sear it,” he said. “Crisp the skin. Keep it simple.”
So I bought two fillets, a little over a pound total, and walked home feeling like I’d just accepted a dare. I had no plan for a side dish, but I’d been craving something creamy and comforting. That’s when I remembered the saffron risotto I’d made once for a dinner party—the one that everyone kept spooning seconds of. The combination just clicked in my head. Crispy fish. Velvety rice. That golden, almost floral scent of saffron.
That night, I made the best dinner I’d cooked in months. The fish skin turned shatteringly crisp, the flesh flaked apart like butter, and the risotto was so rich and luscious it felt like a hug on a plate. I texted my friend Sarah a photo with the caption “new favorite” and she replied within seconds asking for the recipe. Honestly, I’ve made this crispy St Pierre fish with saffron risotto at least five times since then. It’s one of those meals that feels special enough for company but comes together in under an hour with no stress. And that’s exactly why I’m sharing it with you today.
Why You’ll Love This Recipe
Let me be real with you—this isn’t one of those recipes that looks complicated but actually isn’t. This one genuinely delivers restaurant-quality results without the restaurant-level stress. Here’s why it works:
- Quick & Easy: You’ll have dinner on the table in about 45 minutes. The risotto needs a little patience, but the active cooking time is only about 30 minutes. Perfect for a weeknight when you want something impressive.
- Simple Ingredients: No wild grocery store scavenger hunts. St. Pierre is becoming more common at fish counters, and the rest—arborio rice, saffron threads, chicken or vegetable broth, white wine, onion, butter, Parmesan—are pantry staples for anyone who cooks regularly.
- Perfect for Date Night or Dinner Parties: This is the kind of meal that makes people close their eyes when they take the first bite. It’s elegant without being fussy, and it pairs beautifully with a crisp white wine like Sauvignon Blanc or a light Chardonnay.
- Crowd-Pleaser: Even people who say they “don’t like fish” have gone back for seconds. The crispy skin and tender flesh are just so satisfying, and the risotto is universally adored.
- Unbelievably Delicious: The combination of crispy, golden-brown fish skin with creamy, saffron-infused rice is next-level comfort food. It’s the kind of meal that makes you slow down and actually taste every bite.
I’ve tested this recipe multiple times to get the risotto just right—not too thick, not too runny, with that perfect al dente bite. The fish technique comes from years of trial and error (and a few sad, soggy fillets). This is my best version, and I’m confident it’ll become a favorite in your kitchen too.
What Ingredients You Will Need
This recipe uses simple, high-quality ingredients to create something truly special. The saffron is the star of the risotto, while the St. Pierre fish shines with minimal fuss. Here’s everything you’ll need:
For the Saffron Risotto
- 1 ½ cups (300g) arborio rice – The high starch content gives risotto its signature creamy texture. Carnaroli or vialone nano work beautifully too.
- 4 cups (1 liter) chicken or vegetable broth – Use low-sodium so you can control the salt. I prefer Better Than Bouillon for the most flavor.
- ½ cup (120ml) dry white wine – Something you’d actually drink, like Pinot Grigio or Sauvignon Blanc. The wine adds acidity that balances the richness.
- 1 small onion (about 150g), finely diced – Yellow or white onion works. Shallots are even better if you have them.
- 3 tablespoons (45g) unsalted butter – Divided. Half goes into the risotto at the end for that glossy finish.
- ½ cup (50g) freshly grated Parmesan cheese – Please, please grate it yourself. Pre-shredded won’t melt the same way.
- Large pinch of saffron threads (about ¼ teaspoon) – This is where the magic happens. Steep the threads in 2 tablespoons of warm broth for 10 minutes before using. It releases the color and flavor.
- Salt and freshly ground black pepper – To taste.
For the Crispy St. Pierre Fish
- 4 St. Pierre (John Dory) fillets, about 6 oz (170g) each – Skin on, please. The skin is what gets that gorgeous crispy crust. If you can’t find St. Pierre, sea bass or red snapper are excellent substitutes.
- 2 tablespoons (30ml) olive oil – For searing. Use a good-quality extra virgin if you have it.
- 2 tablespoons (30g) unsalted butter – Adds flavor and helps the skin brown evenly.
- Salt and freshly ground black pepper – Season generously right before cooking.
- Fresh lemon wedges – For serving. That squeeze of acid brightens everything.
For Garnish (Optional but Lovely)
- Fresh parsley or chives, chopped – A sprinkle of green makes it look restaurant-ready.
- Extra Parmesan shavings – Because why not?
Equipment Needed
You don’t need a professional kitchen to pull this off, but a few key tools make a big difference:
- Large heavy-bottomed pot or Dutch oven – For the risotto. A wide, heavy pot distributes heat evenly and prevents scorching. I use my Le Creuset and love it, but any heavy pot works.
- Large non-stick or stainless steel skillet – For searing the fish. Non-stick is more forgiving for crispy skin, but stainless steel gives a better crust if you’re confident.
- Wooden spoon or silicone spatula – For stirring the risotto. A flat-edged spoon helps scrape the bottom and keeps things moving.
- Ladle – For adding broth gradually.
- Fish spatula – Thin and flexible, perfect for flipping delicate fillets without breaking them. A regular spatula works too, just be gentle.
- Cutting board and sharp knife – For dicing the onion and prepping garnishes.
- Measuring cups and spoons – Precision matters with risotto.
If you don’t have a fish spatula, don’t stress. I’ve used a thin metal turner for years before I finally bought one. The key is being gentle—St. Pierre fillets are delicate and can fall apart if you’re rough.
Preparation Method
Step 1: Prep Your Ingredients (5 minutes)
Before you start cooking, get everything ready. Dice the onion finely. Grate the Parmesan. Steep the saffron threads in 2 tablespoons of warm broth. Measure your wine and broth. Pat the fish fillets dry with paper towels and season them generously on both sides with salt and pepper. Having everything within reach makes the process smooth and stress-free.
Step 2: Start the Risotto (30 minutes)
Heat the broth in a small saucepan over low heat. You want it warm, not boiling, when you add it to the rice. In your large pot, melt 1 ½ tablespoons of butter over medium heat. Add the diced onion and cook, stirring occasionally, until it’s soft and translucent—about 4-5 minutes. Don’t let it brown; you want sweetness, not color.
Add the arborio rice and stir for about 1 minute until the grains are coated and the edges start to look translucent. This toasts the rice slightly and helps it absorb liquid evenly. Pour in the white wine and stir until it’s mostly absorbed, about 2 minutes. You’ll smell that lovely alcohol burn off.
Now the patient part begins. Add the warm broth one ladleful at a time (about ½ cup each), stirring frequently. Wait until each addition is almost fully absorbed before adding the next. This takes about 18-20 minutes total. After about 10 minutes, stir in the saffron threads and their soaking liquid. The risotto will turn a gorgeous golden yellow.
When the rice is tender but still has a slight bite in the center (al dente), and the mixture is creamy but not soupy, you’re done. Remove the pot from the heat. Stir in the remaining 1 ½ tablespoons of butter and the grated Parmesan. Cover and let it rest for 2 minutes. Taste and adjust salt and pepper.
Step 3: Cook the Fish (8 minutes)
While the risotto rests, heat the olive oil in your skillet over medium-high heat. When the oil shimmers, add the butter and swirl to coat. Place the fish fillets skin-side down in the pan. Don’t crowd them—cook in batches if needed. Press down gently with a spatula for 10 seconds to ensure even contact.
Cook without moving for 4-5 minutes. The skin should turn deep golden brown and crispy. You’ll see the edges of the fillet start to turn opaque. Carefully flip the fish using your fish spatula. Cook for another 2-3 minutes on the flesh side, until just cooked through. The flesh should flake easily with a fork. Remove from the pan and let rest for 1 minute.
Step 4: Plate and Serve (2 minutes)
Spoon a generous portion of saffron risotto onto each plate. Place a crispy fish fillet on top, skin-side up. Garnish with fresh herbs, a few Parmesan shavings, and a lemon wedge on the side. Serve immediately while everything is hot.
Cooking Tips & Techniques
I’ve made this recipe enough times to know where things can go wrong. Here are the lessons I learned the hard way so you don’t have to:
- Pat the fish dry. Moisture is the enemy of crispy skin. Use paper towels and really press them into the skin to absorb any hidden moisture. Let the fillets sit uncovered in the fridge for 10 minutes if you have time—that dries them out even more.
- Don’t skimp on the fat. The combination of oil and butter gives you a higher smoke point (from the oil) and better flavor (from the butter). If the pan looks dry, add a little more butter. Your fish will thank you.
- Let the risotto speak. Risotto is all about patience. Don’t rush the broth additions—each ladleful needs time to absorb. And don’t stop stirring for too long, or the rice might stick. But also don’t over-stir; a gentle, steady rhythm is perfect.
- Use warm broth. Adding cold broth to the rice shocks the temperature and slows down cooking. Keep it warm on the stove for the best results.
- Trust your instincts. Cooking times are guidelines, not rules. The fish is done when it flakes easily. The risotto is done when it’s creamy and the rice has a slight bite. Your senses are your best tools.
One time I forgot to season the fish before cooking—rookie mistake. The skin was gorgeous but the flesh tasted flat. Don’t be like me. Season generously right before it hits the pan.
Variations & Adaptations
This recipe is flexible, and I’ve tried a few twists over the months. Here are some you might enjoy:
- Different Fish: St. Pierre is lovely, but sea bass, red snapper, or even halibut work beautifully. Just adjust cooking time based on thickness. Thicker fillets need an extra minute or two per side.
- Vegetarian Version: Swap the fish for seared king oyster mushrooms or pan-fried cauliflower steaks. Use vegetable broth in the risotto and skip the Parmesan (or use a vegetarian alternative).
- Herb Infusion: Add a sprig of thyme or a bay leaf to the broth while it warms. It infuses the risotto with subtle herbal notes. I did this once on a whim and it was lovely.
- Citrus Twist: Add a teaspoon of lemon zest to the risotto at the end, along with the butter and Parmesan. It brightens the flavor and pairs beautifully with the saffron.
- Spicy Kick: Stir in a pinch of red pepper flakes with the onion for a subtle heat. It’s unexpected but works surprisingly well with the saffron.
I once made this with a side of creamy one pan chicken fajita pasta for a dinner party that turned into a potluck, and everyone kept going back for more. But honestly, this risotto is so good it doesn’t really need a side—it’s the main event.
Serving & Storage Suggestions
This dish is best served immediately, while the fish skin is still crispy and the risotto is warm and creamy. But here’s how to handle leftovers if you have them:
- Serving Temperature: Serve the fish hot and the risotto warm. A squeeze of fresh lemon juice right before eating makes a huge difference—it cuts through the richness and wakes up all the flavors.
- Storage: Store leftover fish and risotto separately in airtight containers in the refrigerator. The fish will keep for up to 2 days, the risotto for up to 3 days.
- Reheating Risotto: The risotto will thicken as it sits. To reheat, add a splash of broth or water and warm it gently in a saucepan over low heat, stirring occasionally. It won’t be as creamy as fresh, but it’s still delicious.
- Reheating Fish: Reheat the fish in a non-stick skillet over medium heat with a little butter. Cook for 2-3 minutes per side until warmed through. The skin won’t be as crispy, but the flavor will still be there.
- Freezing: I don’t recommend freezing this dish. The risotto’s texture changes when thawed, and the fish will become watery. It’s really best enjoyed fresh.
If you’re meal-prepping, make the risotto ahead and reheat it gently. Cook the fish fresh just before serving. That way you get the best of both worlds—convenience and quality.
Nutritional Information & Benefits
Here’s an approximate breakdown per serving (one fillet with about 1 cup of risotto):
- Calories: ~580
- Protein: 38g
- Fat: 22g
- Carbohydrates: 52g
- Fiber: 2g
- Sugar: 3g
- Sodium: 780mg
St. Pierre is a lean, white fish packed with high-quality protein and omega-3 fatty acids, which support heart and brain health. Saffron is rich in antioxidants and has been linked to mood improvement and reduced inflammation. Arborio rice provides energy through complex carbohydrates, while the Parmesan and butter add calcium and healthy fats. This meal is balanced, satisfying, and surprisingly nutrient-dense for something that tastes so indulgent.
If you’re watching your sodium, use low-sodium broth and go easy on the added salt. You can also swap the butter for a heart-healthy oil in the risotto, though the texture will be slightly different.
Conclusion
This crispy St Pierre fish with saffron risotto has become my go-to when I want to feel like I’m eating at a fancy restaurant without leaving my kitchen. The contrast between the crackling golden skin and the creamy, fragrant risotto is just perfect. It’s the kind of meal that makes you slow down, take a breath, and actually enjoy your food.
I’d love to hear how it turns out for you. Did you try a different fish? Add a twist to the risotto? Drop a comment below and let me know—I read every single one and I genuinely get excited when people try my recipes. And if you loved it, share it with a friend who needs a little restaurant magic at home. Until next time, happy cooking!
Frequently Asked Questions
Can I use frozen St. Pierre fish for this recipe?
Yes, you can. Thaw the fillets completely in the refrigerator overnight, then pat them very dry with paper towels before cooking. Frozen fish tends to release more moisture, so drying is extra important for crispy skin.
What can I substitute for saffron if I don’t have it?
Saffron is pretty unique, but you can get a similar golden color by adding a pinch of turmeric. The flavor won’t be the same—turmeric is earthier and less floral—but the risotto will still be delicious. Start with ¼ teaspoon and adjust to taste.
Can I make the risotto ahead of time?
You can, but it’s best fresh. If you need to prep ahead, cook the risotto until it’s about 80% done (still a little firm in the center), spread it on a baking sheet to cool quickly, and refrigerate. When ready to serve, reheat it with a splash of broth and finish with the butter and Parmesan.
How do I know when the fish is cooked through?
The easiest test is the flake test. Gently press the thickest part of the fillet with a fork. If the flesh separates easily into flakes, it’s done. The internal temperature should reach 145°F (63°C) if you’re using a thermometer.
Can I use a different type of rice for the risotto?
Arborio is the most common, but carnaroli and vialone nano are excellent alternatives. They all have high starch content for that creamy texture. Avoid long-grain rice like basmati or jasmine—they won’t give you the same creamy result.
Pin This Recipe!

Crispy St Pierre Fish with Saffron Risotto
A restaurant-quality dinner featuring pan-seared St. Pierre (John Dory) with shatteringly crisp skin and creamy saffron risotto. This elegant yet easy meal comes together in under an hour and is perfect for date nights or dinner parties.
- Prep Time: 15 minutes
- Cook Time: 30 minutes
- Total Time: 45 minutes
- Yield: 4 servings 1x
- Category: Main Course
- Cuisine: Italian
Ingredients
- 1 ½ cups (300g) arborio rice
- 4 cups (1 liter) low-sodium chicken or vegetable broth
- ½ cup (120ml) dry white wine (e.g., Pinot Grigio or Sauvignon Blanc)
- 1 small onion (about 150g), finely diced
- 3 tablespoons (45g) unsalted butter, divided
- ½ cup (50g) freshly grated Parmesan cheese
- Large pinch of saffron threads (about ¼ teaspoon), steeped in 2 tablespoons warm broth for 10 minutes
- Salt and freshly ground black pepper, to taste
- 4 St. Pierre (John Dory) fillets, about 6 oz (170g) each, skin on
- 2 tablespoons (30ml) olive oil
- 2 tablespoons (30g) unsalted butter
- Fresh lemon wedges, for serving
- Fresh parsley or chives, chopped (optional, for garnish)
- Extra Parmesan shavings (optional, for garnish)
Instructions
- Prep your ingredients: Dice the onion finely. Grate the Parmesan. Steep the saffron threads in 2 tablespoons of warm broth for 10 minutes. Measure the wine and broth. Pat the fish fillets dry with paper towels and season generously on both sides with salt and pepper.
- Start the risotto: Heat the broth in a small saucepan over low heat until warm. In a large heavy-bottomed pot or Dutch oven, melt 1 ½ tablespoons of butter over medium heat. Add the diced onion and cook, stirring occasionally, until soft and translucent, about 4-5 minutes. Do not let it brown.
- Add the arborio rice and stir for about 1 minute until the grains are coated and the edges look translucent. Pour in the white wine and stir until mostly absorbed, about 2 minutes.
- Add the warm broth one ladleful (about ½ cup) at a time, stirring frequently. Wait until each addition is almost fully absorbed before adding the next. After about 10 minutes, stir in the saffron threads and their soaking liquid. Continue adding broth and stirring until the rice is tender but still has a slight bite (al dente) and the mixture is creamy but not soupy, about 18-20 minutes total.
- Remove the pot from the heat. Stir in the remaining 1 ½ tablespoons of butter and the grated Parmesan. Cover and let rest for 2 minutes. Taste and adjust salt and pepper.
- Cook the fish: While the risotto rests, heat the olive oil in a large non-stick or stainless steel skillet over medium-high heat. When the oil shimmers, add the 2 tablespoons of butter and swirl to coat. Place the fish fillets skin-side down in the pan. Do not crowd them—cook in batches if needed. Press down gently with a spatula for 10 seconds to ensure even contact.
- Cook without moving for 4-5 minutes, until the skin is deep golden brown and crispy. Carefully flip the fish using a fish spatula. Cook for another 2-3 minutes on the flesh side, until just cooked through and the flesh flakes easily with a fork. Remove from the pan and let rest for 1 minute.
- Plate and serve: Spoon a generous portion of saffron risotto onto each plate. Place a crispy fish fillet on top, skin-side up. Garnish with fresh herbs, Parmesan shavings, and a lemon wedge on the side. Serve immediately.
Notes
Pat the fish very dry for crispy skin. Use warm broth for the risotto. Season the fish generously right before cooking. For best results, serve immediately while the fish skin is crispy and the risotto is creamy.
Nutrition
- Serving Size: 1 fillet with about
- Calories: 580
- Sugar: 3
- Sodium: 780
- Fat: 22
- Saturated Fat: 10
- Carbohydrates: 52
- Fiber: 2
- Protein: 38
Keywords: crispy St Pierre fish, saffron risotto, John Dory, easy dinner, date night recipe, seafood risotto



