Heat a large cast-iron (12 inches) or saute pan over medium heat.
Pour in oil into the pan. As soon as oil sizzles, add diced onions and garlic saute for about 1-2 minutes until fragrant.
Throw in bell pepper and continue cooking for about 10 minutes, stirring occasionally, until onion and bell pepper mixture is soft and slightly browned. If needed, add an extra 1 to 2 tablespoons oil or as needed. Do not let it burn.
Add whole tomatoes together with all its juice smashed with a wooden spoon to desired texture, followed by all the spices - cumin, paprika, and chili pepper,
Bring to a boil, reduce heat to low and continue cooking stirring for about 2-3 minutes.
Season to taste with salt and pepper.
Crack one egg at a time in a small ramekin and then dig a small well with a spoon or spatula in the shakshuka.
Gently pour the egg into the well. Repeat the same process with all the remaining eggs (crack eggs, make a well and add whole eggs).
Simmer over medium heat for about 10 or more minutes or until you have reached the desired doneness. For me, the yolks have to firm up, so I cook a little longer.
Serve immediately with cilantro, avocado and a drizzle of olive oil!