El municipio está atravesado por el curso del río Adaja, perteneciente a la cuenca hidrográfica del Duero —con nacimiento en el municipio de Villatoro— y que bordea a la ciudad por su lado oeste.