The subject that you're asking about is as dynamic as it gets. Why? Because hitting your "spots" as you call it is NOT the approach that you want to use.
But first, let's understand the total picture in general terms. Steven hit it precisely. In a nutshell he itemized controlling yourself, before anything else. All of those disciplines takes a lot of training, in and of themselves. So, I'll let you and others work on that.
Now more directly to your question. I mentioned "spots" is NOT the approach to use when training to locate your pitches. Why? Because "spots" are beyond your ability - or anyone else's for that matter, to locate your pitches. Be it more reasonable and definitely more attainable to pitch to "locations", that than "spots". I know this may all sound like semantics, but it's not. We as humans are, and have, so many variables with us when going through any movement(s). Thus when playing a simple game of catch, you'll rarely see the person that your throwing to catch your throws in exactly the same "spot" twice. Oh may be by some quirk of fate a catch is made near the same spot as a previous throw of yours, but again, it's rare. This is because we move, basically, differently each and every time we try movement - in any form.
So look, make it easy on yourself and get rid of this "spot" mindset - go for locations in a general way. Say, generally inside, generally up and away, and so forth. By the way, this is primarily with your fastball family of pitches, but to exclude the breaking stuff in that family, like sliders and stuff.
Practice by using a stable target to locate your pitches, and the best stable target that your going to be looking at, pitch after pitch, is the backstop (catcher). So from oh, about thirty feet, have your catcher stand and throw not pitch, by hitting "locations" on his left shoulder, then his face, then his right shoulder, and so on. Get use to viewing your catcher as a part of the only stable thing that's going to help you with "locations". Continue this drill until you feel confident that you can hit each location with a 80% accuracy rate. All the while your throwing now, not pitching. It would also help if you're on level ground with all this.
Now back up to say, fifty feet and repeat. Notice any changes in your locating your catcher's shoulders, face? You should. By moving back you're altering your body's ability to be consistent with your prior movement while adding a bit more "umph" to it, trying to reach your catcher who is farther away. If you're really struggling with locations, go back to thirty feet and start again. Moving to fifty feet again and still having problems means that your body is not in rhythm to command even the simplest movements of throwing a baseball to a general location while throwing on flat ground - not pitching. Stop and get serious coaching. Don't put yourself on the field, on a mound, and try and hold down the pitcher's position.
On the other hand, if all is going well, get back to sixty feet, have your catcher get down and now locate your throws to his right shoulder, face, left shoulder, left knee, right knee. (see below) See which location is your best location and take note of that location. Then notice your next best location and so on. This kind of location proficiency is a record of your best stuff, location wise. Now go to a pitcher's mound and see if everything stays true. If not, you're dealing with variables that need the attention of a competent coach.
Notice in my sixth paragraph I recommended getting a coach, even when "throwing" off flat ground, then I recommended getting a coach again when pitching off a mound in my last paragraph. A coach can help you big time by noticing basic things that your motion is doing, even when just throwing off of a flat surface. When you bring that corrective action to the mound, there's less in the adjustment department that you'll have to deal with.