If you're staying in Ollantaytambo and don't mind a drive, you might also consider catching a taxi to one of the fine restaurants along the main road from Urubamba to Ollantaytambo.
Kusicoyllor, Plaza Araccama s/n (tel. 084/204-103) is a cool cafe/bar right next to the entrance to the ruins, so you might expect it to be touristy and overpriced. It is, but it's still a nice, cozy place. It serves standard Peruvian and predominantly Italian dishes and offers a fixed-price $7 menú. Breakfast is especially good, making it a fine stop after an early morning tour of the ruins.
Tunupa Restaurant & Pizzeria, on Av. Beniterio s/n (no phone), the main drag between the ruins and Old Town, is an inexpensive family-run terrace joint with a very agreeable open-air atmosphere. It serves breakfast, lunch, and dinner, from pancakes to pizza. The owner's adorable young son, Abel, often helps out as a waiter. Across the street, Puka Rumy, Av. Beniterio s/n, is a little bar/cafe with a couple of tables outdoors for people-watching and serves everything from eggs to churrasco (barbecue) and chicken, but it's especially good for a cold beer on the tiny terrace. Other cheap restaurants in Old Town, principally pizzerias, such as Bar Ollantay and La Fortaleza, ring the main square in the Old Town. Hostal Sauce also has a nice (though frequently empty) restaurant serving lunch and dinner.