
Classic Ceviche with Fresh Fish and Lime
Bright, citrus-cured fish tossed with crunchy cucumber, tomatoes, red onion, and cilantro. No cooking required. Fifteen minutes of knife work, thirty minutes of patience, and you've got the freshest thing on the table.
Tasted & written by Rachel
Prep
15 min
Cook
—
Total
15 min
Serves
4
The Key
The marination window is everything. At 30 minutes the fish is still slightly translucent in the center — tender, delicate, almost sashimi-like. At 45 minutes it's fully opaque and firm with a clean bite. Past 90 minutes you've gone too far and the texture turns dry and chalky. Set a timer. Walk away. Come back.
David came back from a work trip to Miami last month talking about some ceviche he had at a hotel pool bar. "It was just... cold fish and lime," he said, like he'd discovered fire. I made this the next day. He ate the entire bowl standing at the counter before I could plate it.
Here's the thing about ceviche — it's barely a recipe. Sharp knife, good limes, the freshest fish you can find, and the acid does the rest. The citrus firms the flesh and turns it opaque, so you're not eating raw fish. You're eating chemistry.
The only real skill is restraint. Don't over-marinate or the texture goes rubbery — 45 minutes is the sweet spot. And use fresh limes. I know squeezing six limes sounds tedious. It takes three minutes. The bottled stuff tastes like battery acid in comparison.
Start by slicing the red onion thin and dropping it into the lime juice with salt. This quick-pickles the onion while you dice everything else — by the time the fish goes in, the raw bite is already gone.
Once the fish is in the lime juice, walk away. Set a timer for 45 minutes. Read something. Resist the urge to stir every five minutes — you're not helping, you're just breaking up the fish.
Mia asked me once if the fish was cooking. "Sort of," I told her. She watched a piece go from gray to white over twenty minutes and decided it was magic. She's not wrong.
When the timer goes off, fold in the vegetables and taste. It probably needs more salt — ceviche always needs more salt than you think. A pinch of heat. That's it.
If you've got a good avocado (and I always have too many — David says I treat them like I'm running a rescue), dice it and fold it in at the very last second. The acid will turn it to paste if it sits.

Mise en place
Ingredients
- ½ red onion, thinly sliced with the grainthinly sliced with the grain
- 1-1½ tsp kosher salt (start with 1, add more to taste)
- 0.25 tsp Black Pepper
- ¾ cup fresh lime juice (4-6 limes, freshly squeezed)freshly squeezed
- 1-2 garlic cloves, very finely mincedvery finely minced or pressed
- 1 serrano or jalapeño, seeded and very finely choppedseeded and very finely chopped
- 1 lb fresh firm white fish (sea bass, snapper, halibut, or mahi-mahi)diced into ½-inch cubes
- ¼-½ cup fresh cilantro, choppedchopped
- 1 cup cherry or grape tomatoes, halvedhalved
- 1 cup cucumber, dicedpeeled and diced
- 1 tbsp Olive Oil
Optional garnish
- 1 semi-firm avocado, diceddicedOptional
For serving
- Tortilla chips or tostadas for servingOptional
The Method
Instructions
- 01
Slice the red onion thinly with the grain and toss in a large glass bowl with the salt, pepper, and all of the lime juice. Coat well — the onion starts quick-pickling immediately.
Done when:Onion slices are fully submerged in lime juice and starting to turn slightly pink at the edges.
- 02
Add the diced fish, garlic, and chopped serrano pepper. Gently fold everything together so every cube of fish is in contact with lime juice.
Done when:All fish pieces are coated in citrus and submerged — no dry cubes poking above the surface.
- 03
Add the tomatoes, cucumber, cilantro, and olive oil. Stir gently — you're not making a salsa, you're building layers.
Done when:Vegetables are evenly distributed through the fish and lime mixture, everything looks bright and colorful.
- 04
Cover and refrigerate for 30-60 minutes. The sweet spot is 45 minutes — fish is firm but not rubbery, flavors have melded.
Done when:Fish has turned fully opaque white throughout — no translucent gray remaining when you break a piece open. Texture is firm but gives slightly when pressed.
- 05
Taste and adjust. More salt? Probably. More chili? Your call. If adding avocado, fold it in gently right before serving — it falls apart if it sits in the acid.
Done when:Seasoning is bright and balanced — you should taste lime first, then salt, then a slow chili warmth at the back.
Where it goes wrong
Common mistakes
- ✕Marinating longer than 90 minutes — the acid keeps working and the fish turns tough and chalky, like overcooked shrimp
- ✕Using pre-squeezed lime juice from a bottle — the preservatives add bitterness and the flavor is flat compared to fresh
- ✕Cutting the fish too small — pieces under ½ inch dissolve into mush during marination
- ✕Adding avocado too early — it breaks down in the acid and turns the whole bowl into guacamole
Context
Compared to the usual
Traditional Peruvian ceviche uses leche de tigre — the citrus marinade itself, served as a shot alongside the fish, sometimes with sweet potato and corn. Mexican ceviche (what this is) leans heavier on vegetables and often adds tomato-based juices like Clamato. The Sonora-style version from northern Mexico marinates shrimp overnight in lime, adds ketchup and Clamato, and eats more like a cocktail than a salad. This recipe sits in the clean middle: Mexican structure, no tomato juice, fish-forward, the way David's Miami pool bar probably made it.
Glossary
Techniques used
- Ceviche
- A Latin American dish of raw fish or seafood 'cooked' by marinating in citrus juice. The acid denatures the proteins — same chemical change as heat, different result. Originated in Peru, now found across Mexico, Ecuador, and the Caribbean with regional variations.
- Denaturing
- When acid (or heat) changes the structure of proteins in fish, turning the flesh from translucent and soft to opaque and firm. It's actual chemistry, not just flavor — the fish is genuinely transformed.
- Quick-pickle
- Soaking sliced vegetables (here, red onion) in acid briefly to soften raw bite and add tang without a full fermentation process.
- Serrano pepper
- A small, bright green Mexican chili. Hotter than a jalapeño (10,000-25,000 Scoville) but cleaner flavor. Seed it unless you want real heat.
Riffs
Variations
Shrimp Ceviche
Swap the fish for 1 lb raw shrimp (peeled, deveined, diced). Marinate 30-60 minutes until pink and opaque. Add ½ cup Clamato juice if you want the classic Mexican shrimp cocktail style. Serve on tostadas.
Tropical Mango Ceviche
Add 1 cup diced mango with the vegetables. The sweetness plays off the lime and chili beautifully. Use halibut or snapper — their mild flavor won't compete.
Spicy Habanero Version
Replace the serrano with half a habanero (minced, seeded). Fruity, floral heat that pairs with the citrus. Start with less than you think — habaneros don't mess around.
Q & A
Frequently asked
Is ceviche safe to eat? The fish isn't technically cooked.
The citric acid kills most bacteria and parasites, similar to heat. Use sushi-grade or very fresh fish from a trusted source. If you're nervous, use previously frozen fish — freezing kills parasites too.
Can I use shrimp instead of fish?
Absolutely — see the shrimp variation below. Use raw shrimp and marinate 30-60 minutes, or use pre-cooked shrimp and just toss everything together for a 10-minute version.
Can I skip the cilantro?
If you're one of those people (no judgment — it's genetic), substitute flat-leaf parsley with a squeeze of extra lime. Not the same, but it works.
How far ahead can I make ceviche?
Prep everything separately up to 4 hours ahead. Combine with lime juice no more than 90 minutes before serving. After that the fish texture degrades.
Storage
Leftover ceviche keeps in the fridge for up to 24 hours in an airtight container. The fish will continue to firm up and the flavor intensifies — still good on tostadas, just a different texture.
Reheating
Don't. Ceviche is served cold. Pull from the fridge and eat within 5 minutes of plating.
Freezing
Ceviche does not freeze well — the vegetables turn to mush and the fish texture breaks down completely. Make it fresh each time.
Make ahead
Dice fish and prep all vegetables up to 4 hours ahead, stored in separate containers in the fridge. Combine with lime juice no more than 60-90 minutes before serving for the best texture.
Serve with
Pile onto tostadas, scoop with thick tortilla chips, or eat straight from the bowl with a spoon. A cold beer — Mexican lager, nothing hoppy — is the correct pairing. Sliced radishes and extra lime wedges on the side.