Lima: In the capital city of Peru we stay at the El Tambo hotel on The Traveling Professor's tours to Peru and Machu Picchu. It is in the Miraflores district, close to shopping and great restaurants. Website: http://www.eltamboperu.com/english/. Please note that Peruvian hotels are sometimes called "hostals" which does not have the same meaning, in any way, to a hostal in Europe.
Cusco: My favorite hotel in Cusco is the colonial-style Terra Andina. It is on a quiet street near the San Pedro market, conveniently located within strolling distance to all the attractions you might want to go to. The service is impeccable, the rooms are large, the modest restaurant serves a terrific buffet breakfast and a good lunch (I love the chicken soup). Website: http://www.terraandinahotel.com
Machu Picchu: There are really no hotels, other than the ultra-expensive Sanctuary Lodge, physically located at Machu Picchu. All other hotels are at the base in Aguas Calientes. Here, I like the El Mapi hotel (http://www.inkaterra.com/byinkaterra/el-mapi-hotel/). It is on the modern side, with a great bar, comfortable rooms and all the services you would need. For those looking for a hotel with more "character", try the adventurous Gringo Bills: http://www.gringobills.com/website/eng/main.php
Puno: On The Traveling Professor's small group tours to Peru and Machu Picchu, Puno and Lake Titicaca has always been on our itinerary. For an in-town experience, we like the Casa Andina Puno Tikarani (http://www.casa-andina.com/classic-puno-tikarani/?lang=en). The rooms are spacious, it is a clean and comfortable hotel, the service is good. It could use better Internet service and perhaps a better restaurants, but we usually travel over to its sister property, Casa Andina Private Collection for a superior dinner at WOW! prices.
For more information on traveling to Peru, see www.travelingprofessor.com.