Cut the paneer into 1/2 by 1/2 by 1 1/2 inch pieces. Spread the pieces on a piece of waxed paper and leave them to dry slightly for 1/2 hour.
Heat 3 tbsp of the oil over medium heat in a large heavy-bottomed pan, preferably one with a non-stick interior. When the oil is hot, add cheese pieces. Keep a saucepan lid or spatter screen handy, since the moisture from the cheese may be released explosively, causing tiny particles of cheese to fly all over. Dusting the paneer pieces with a little flour prevents spattering. Fry the cheese, turning and tossing often to prevent sticking and burning, until lightly seared (about 5 minutes). Transfer the pieces to a bowl. (The paneer should be fried in batches so that there is ample room in the pan for turning them without fear of their breaking.)
Add the remaining oil to the pan, and increase the heat to high. Add onions, and fry until they turn light brown (about 5 minutes), stirring constantly so that they do not burn. Add garlic and ginger, and fry for an additional 2 minutes. Add coriander, turmeric, red and black pepper, and paprika, all at once. Stir rapidly for a moment, and immediately add tomatoes. Cook, stirring often, until the mixture thickens to a pulpy sauce and the fat begins to separate (about 10 minutes).
Add 2 1/2 cups hot water, and bring the sauce to a boil. Reduce heat to medium, and cook the sauce, covered, for 20 minutes. Cool the sauce briefly. Then puree it in a blender or food processor, leaving the sauce a little coarse so that it has a certain texture.
Return the sauce to the pan. Add peas, salt, and the fried cheese, along with 1/2 cup hot water, and bring the sauce to a boil. Reduce heat to medium and simmer, covered, until the peas are cooked through (about 5 minutes) Turn off heat and let the dish rest, covered, for an hour before serving. When ready to serve, heat thoroughly. Fold in garam masala and chopped coriander leaves. Check for salt, and serve.