Solo is the best place in Indonesia to buy batik. The choice is immense, the quality is high, and prices are significantly lower than in Yogyakarta or Bali. Pasar Klewer is the place to start for volume and variety; Laweyan is better for quality pieces direct from producers.
Beyond batik, the city has several silver workshops near the palace quarter and a good selection of wayang kulit (shadow puppets) in the antiques shops around Pasar Triwindu — a market specialising in old Javanese artefacts, colonial-era furniture, and curiosities.