Cardinals hold on late, take down Nats