In the sentence "Miguel le dio a su novia un anillo," the "le" is actually the indirect object pronoun. It tells us to whom the ring (anillo) was given. The ring itself is the direct object, as it is what is directly effected by the verb. (The ring is what is being given.) Indirect objects tell us to whom or what the action is being performed, while the direct object tells us on what the action is directly being performed.
It sounds a little confusing, so here's another example:
"Yo les compro hamburguesas a ustedes." (I buy you guys hamburgers.)
What is being directly effected by the verb (compro) are the hamburgers (hamburguesas). That's what I'm buying. That is the direct object. You (plural, ustedes) is the indirect object, explicitly stated, while "les" is the indirect object pronoun. It's to whom the action is being performed; I'm buying hamburgers for you guys (ustedes).
In English, the indirect object pronoun isn't necessary when we state the indirect object explicitly, such as "Miguel gave a ring to his girlfriend." However, we could also use the indirect object pronoun if we wished. "Miguel gave a ring to her."
In Spanish, however, the indirect object pronoun is required. In other words, we must use it in the sentence whether or not we specifically state the indirect object. That's why in Spanish you could say "Miguel le dio un anillo," (Miguel gave her/him a ring) or "Miguel le dio un anillo a su novia." (Miguel gave his girlfriend a ring.) However, you cannot say "Miguel dio un anillo a su novia" because it lacks the "le."
Just to recap, in Spanish you have to include the indirect object pronoun whenever you explicitly state the indirect object.