Bring a medium pot of water to boil. Rinse and drain the nopales in a colander. Add to the boiling water and cook for about 10 minutes to remove most of the slime, stirring occasionally. Drain the cactus. Rinse and drain again and set aside.
Bring a second medium pot of water to boil. Add 1/2 an onion, tomatoes and garlic. Boil until the onions and tomatoes soften, 7 to 10 minutes. Drain, reserving about 1/3 cup of the cooking water.
In a blender, add the onions, tomatoes, garlic and the chipotle peppers with a bit of the sauce from the can, plus the reserved cooking water. Add the bouillon and puree until smooth. Season to taste.
Reserve two tablespoons of olive oil and heat the rest in a large frying pan. Add the cubed tofu and fry until brown on all sides. Remove from pan and allow to drain on paper towels.
Add the remaining two tablespoons of olive oil to the frying pan, add the sliced onions and cook about two minutes until translucent.
Add the nopales and the fried tofu. Pour in the chipotle sauce, cover and simmer for 20 minutes. Stir in cilantro and season with salt and pepper.