Spanish does not have the kind of vowel reduction that many Germanic languages (like English) have, but it does have vowel reduction. The difference is that English has the kind of vowel reduction that neutralizes differences between vowel phonemes, and Spanish has a kind of vowel reduction that still maintains the differences of the five vowel phonemes found in most accents of Spanish.
In other words, the stressed allophones of /a o u e i/ are distinct from each other, and so are their unstressed allophones.
To go into a bit more detail, the fact is the pronunciation of vowels in any language is influenced to some degree by the other sounds adjacent to it (as well as other paralinguistic factors affecting the vocal organs – smiling, for instance, tends to spread the lips). Because of this, when discussing a vowel phoneme, we have to consider the different allophones; we can also think of a vowel as occupying a “vowel space” containing its different allophones. In a language like English, with more vowels and a higher degree of neutralization of vowels in certain environments, the vowel spaces will be smaller and have more overlap. In Spanish, the vowel spaces are bigger, and do not overlap. In other words, in Spanish, vowels allow for more allophonic variation, and are less likely to be misheard as other vowels by native speakers.
First off, some facts about stress in Spanish. In Spanish, stress is mainly indicated by three factors: tone, volume and vowel length. Syllables carrying stress have a higher volume and a higher tone, and vowels in stressed syllables are longer. However, Spanish being a syllable-timed language, the difference in length between a stressed and an unstressed vowel is not quite so pronounced as in English.
Let’s talk about the stressed and unstressed allophones (the Spanish vowel space) in more detail.