Heat the oil in a large, heavy saucepan over medium-high heat. I like to use a well-seasoned cast-iron skillet.
Add the onions and ½ teaspoon of kosher salt and cook, stirring often, until golden, about 5 minutes.
Reduce the heat to medium. Add the garlic, paprika, cumin, and red pepper flakes and cook, stirring, for 30 seconds.
Add the tomatoes (undrained), the remaining ½ teaspoon of kosher salt, and black pepper. Cook for 10 more minutes, uncovered, stirring frequently, so the sauce thickens and the flavors meld.
Crack the eggs into small bowls. With the back of a spoon, make a well in the sauce and carefully pour an egg into it. Gently push the tomato sauce over the edges of the egg white to keep it from spreading too much. Repeat with three more eggs, spacing them apart so that the eggs are more or less evenly distributed.
Reduce the heat to medium-low and keep cooking the shakshuka, uncovered and undisturbed, until the egg whites are set but the yolks are still soft, 5-10 more minutes. It’s best not to cover the skillet, as this creates a milky white film on the egg yolks.
Sprinkle the eggs with salt and pepper to taste, garnish with chopped cilantro or parsley, and serve.
Video
Notes
If using any salt other than Diamond Crystal Kosher Salt, including Morton kosher salt, use half the amount listed.
It's best to use medium eggs. If you use large eggs, the volume of egg whites will be too high for the tomato sauce to contain. If you only have large eggs, crack each egg into a small bowl and pour out some of the egg white before adding the eggs to the skillet.
At the very last step, after you add the eggs to have them poached in the tomato sauce, it's tempting to cover the skillet so that the egg whites can cook faster. However, covering the skillet will result in a milky film forming on the egg yolks. It's still tasty but not as pretty. So, it's best to patiently cook the eggs uncovered. If it seems like the tomato sauce is drying while the eggs cook, lower the heat to medium-low or even low. You can also drizzle a bit of water on the tomato sauce.
You can keep the tomato sauce but not the eggs. So, you can make as much of the sauce as you wish and keep it in a sealed container in the fridge for up to 4 days, but only poach as many eggs as you'll eat right away. Then, when you serve the leftovers, you can fry or poach the eggs separately.