I just think it looks a whole lot cleaner to give one instance, and let the user create many timers with different ID's.
What are all these timers used for and where? Does all the code and every function and class need to know about all the timers?

I can't see why you think the first approach is necessarily cleaner.
Code:
TimerManager timers;
timers.start("timer1");
timers.start("timer2");
timers.stop("timer2");
timers.stop("timer1");

//vs
Timer timer1;
Timer timer2;
timer2.stop();
timer1.stop();
Before I give up on this method, there's not possible way to do this at all?
Of course there is. Firstly you probably shouldn't call a class that doesn't time but stores timers a timer. Then it might contain a std::map<std::string, Timer>.