To begin, prepare the fish by dicing it into small cubes, about 1 cm in size. Place the fish in a large glass or ceramic bowl (avoid metal bowls as they can react with the lime juice). Ensure the fish is fresh and chilled to preserve its delicate flavour and texture.
Squeeze the fresh lime and lemon juice over the diced fish, ensuring the fish is fully submerged in the juice. The citrus juice will "cook" the fish through a process called denaturation. Cover the bowl with plastic wrap and refrigerate for 30-45 minutes, or until the fish turns opaque and firm.
While the fish is marinating, finely dice the red onion, tomato, and cucumber. Set them aside in separate bowls. This allows the vegetables to retain their crispness and avoid getting soggy before mixing them with the ceviche.
Once the fish has "cooked" in the citrus juice, drain off about half of the liquid to avoid overly watery ceviche. You want enough juice to keep it moist but not too much that it overpowers the fresh ingredients.
Add the diced red onion, tomato, cucumber, and minced serrano or jalapeño chilies to the fish. Mix gently to avoid breaking up the fish too much. Taste for heat and adjust by adding more chili if you prefer a spicier ceviche.
Season the ceviche with salt and black pepper to taste. A good pinch of salt enhances the natural flavors of the fish and citrus. Add freshly chopped cilantro for a vibrant, herbal note that complements the dish beautifully.
Gently fold in the diced avocado, being careful not to mash it. The creaminess of the avocado balances the acidity of the citrus and adds a smooth texture to the ceviche.
Serve the ceviche immediately with tortilla chips or crispy tostadas. Garnish with lime wedges for an extra burst of citrus, if desired. For an authentic presentation, serve the ceviche in chilled bowls or on a platter, topped with fresh cilantro and an extra drizzle of lime juice.