Pretérito perfecto vs pretérito indefinido

Choosing between he comido and comí — the pretérito perfecto and the pretérito indefinido — is the single most consequential tense decision in peninsular Spanish. Get it right and you sound native; get it wrong and you sound either Latin-American or unmistakably foreign. The good news: in Spain, the rule is almost mechanical once you internalise it.

This page lays out the contrast as a decision rule with ten minimal pairs. The fuller treatment of when lives in choosing/preterite-vs-present-perfect; here we focus on the side-by-side mechanics so you can drill them.

The one-sentence decision rule

If the action happened inside a time frame that includes now (today, this week, this month, this year, "ever" in your life), use the pretérito perfecto. If it happened inside a frame that is closed off from now (yesterday, last week, in 2010, two years ago, the date of any specific past day), use the pretérito indefinido.

That is the whole rule. The boundary is not "how long ago" — hace cinco minutos and hace cinco años can both go either way depending on whether the event is felt as inside today (perfect) or already in a closed time period (preterite). The boundary is "is the frame still open?"

💡
The cleanest heuristic: ask yourself which time expression you could naturally add to the sentence. Hoy / esta semana / este año / nunca / alguna vez → perfect. Ayer / anoche / la semana pasada / en 2010 / hace dos años → preterite. The choice of time word forces the tense.

Side-by-side: ten minimal pairs

Each pair below describes the same kind of event with the same verb. Only the time frame differs — and the tense flips with it.

1. Eating today vs eating yesterday

Hoy he comido paella en el restaurante de la esquina.

I had paella at the corner restaurant today.

Ayer comí paella en el restaurante de la esquina.

I had paella at the corner restaurant yesterday.

Hoy is the open frame; ayer is closed. The verb flips from he comido to comí on that single word.

2. Calling this morning vs calling on Tuesday

Esta mañana he llamado a mi madre y le he contado lo del coche.

This morning I called my mother and told her about the car.

El martes llamé a mi madre y le conté lo del coche.

On Tuesday I called my mother and told her about the car.

Esta mañana keeps the frame open; el martes (referring to a specific past Tuesday before today) closes it.

3. Travelling this year vs travelling last year

Este año hemos viajado a Italia y a Portugal.

This year we've travelled to Italy and Portugal.

El año pasado viajamos a Italia y a Portugal.

Last year we travelled to Italy and Portugal.

Este año is open until 31 December; el año pasado is permanently closed. Same trip, different year, different tense.

4. Seeing a film tonight vs last night

Esta noche hemos visto una peli buenísima en el sofá.

We watched a great film on the sofa tonight.

Anoche vimos una peli buenísima en el sofá.

We watched a great film on the sofa last night.

The same event narrated at different moments takes different tenses. Esta noche, spoken before bed, is still inside today. Anoche, spoken the next day, is closed off.

5. Working a lot recently vs a long time ago

Últimamente he trabajado mucho — necesito unas vacaciones.

I've worked a lot recently — I need a holiday.

En 2019 trabajé muchísimo y casi me quemo.

In 2019 I worked a huge amount and almost burned out.

Últimamente (lately) anchors the work in a frame extending up to now. En 2019 fixes it inside a closed year.

6. Seeing a friend ever vs in the past month

¿Has visto a Marta alguna vez con su novio nuevo?

Have you ever seen Marta with her new boyfriend?

El mes pasado vi a Marta con su novio nuevo en una boda.

Last month I saw Marta with her new boyfriend at a wedding.

Alguna vez (ever) opens a lifetime frame and pulls the perfect. El mes pasado is closed and pulls the preterite.

7. Living in Madrid before vs as a child

Hemos vivido en Madrid los últimos cinco años.

We've lived in Madrid for the last five years.

Vivimos en Madrid cuando éramos niños.

We lived in Madrid when we were children.

The first frame (los últimos cinco años) still includes now. The second (cuando éramos niños) is permanently in the past.

8. Finishing the report just now vs at three o'clock yesterday

Acabo — he terminado el informe hace cinco minutos.

I'm done — I finished the report five minutes ago.

Terminé el informe ayer a las tres de la tarde.

I finished the report yesterday at three in the afternoon.

Hace cinco minutos sits inside today and pulls the perfect. Ayer a las tres is a closed point in yesterday and pulls the preterite. Hace + time is not a fixed tense trigger — the trigger is whether the calculated moment falls inside today.

9. Being to Granada (experience) vs in 2018

He estado en Granada tres veces y me encanta.

I've been to Granada three times and I love it.

En 2018 estuve en Granada con mi familia.

In 2018 I was in Granada with my family.

The experiential frame (three times in my life) takes the perfect. The dated visit takes the preterite.

10. Not having seen him today vs not having seen him yesterday

Hoy no lo he visto, no sé dónde estará.

I haven't seen him today, I don't know where he is.

Ayer no lo vi, ¿estaba enfermo?

I didn't see him yesterday, was he ill?

Negation follows the same rule as affirmation. Hoy pulls the perfect, ayer the preterite — the no doesn't change anything.

The trigger lists side by side

The cleanest way to internalise the contrast is to memorise the two trigger lists. If a time expression from list A appears, the perfect is your default. If one from list B appears, switch to the preterite.

List A — Present perfect triggersList B — Preterite triggers
hoy (today)ayer (yesterday)
esta mañana / tarde / nocheanoche / anteanoche
esta semanala semana pasada
este mesel mes pasado
este añoel año pasado
hace un rato / hace un momento (today)hace dos días / hace un año
hasta ahora / hasta el momentoen 1995 / en marzo / el lunes
ya / todavía no / aún node repente / una vez (in narrative)
nunca / jamás / en mi vidadurante tres horas / dos años
alguna vez / muchas vecescuando + punctual past event
recientemente / últimamenteal final / al día siguiente

A small caveat: recientemente sometimes appears with the preterite in Latin-American Spanish and increasingly in some peninsular registers (recientemente publicó un libro in news prose). The default for everyday peninsular speech remains the perfect: recientemente he leído un libro buenísimo.

The cases where both are possible

There is a narrow zone where both tenses are heard in Spain, mostly because the speaker is choosing whether to treat the frame as still open or already closed.

Sunday night talking about esta semana. Both esta semana hemos ido al cine dos veces and esta semana fuimos al cine dos veces are heard, because the week is about to close. The perfect is still the more common choice, but the preterite is no longer wrong.

Distant or narrative framing of today's events. A speaker reporting on a busy day in a clipped, narrative tone may shift to the preterite even for today: Hoy fui al banco, vi al gestor, hablé con la directora y volví a casa — the run-on narrative tone treats each event as a closed point. This is a stylistic choice, not the default, and unusual outside spoken narrative.

Recent past with strongly bounded duration. Estuve dos horas en el médico esta mañana sometimes appears alongside He estado dos horas en el médico esta mañana. The bounded duration (dos horas) can pull toward the preterite even with a today-frame. Both are heard; the perfect remains the safer default.

💡
If you're unsure in any single sentence, default to the perfect when the time expression includes now. You will be right roughly 95% of the time in everyday peninsular speech, and the remaining 5% will sound stylistic rather than wrong.

Aspect: what each tense does to the event

Beyond the time frame, the two tenses present the event differently.

The preterite packages the event as a closed, bounded point that the speaker is narrating from outside. Comí paella ayer — the eating happened, it's over, I'm telling you about it from a distance.

The perfect packages the event as still connected to the speaker's current moment. He comido paella hoy — the eating happened, but its effects (I'm full, I tasted it, I picked the restaurant, the day's lunch box is checked) are still part of now. The frame is open because the relevance is open.

This is exactly why ayer comí and hoy he comido feel different even though both describe completed actions: the perfect carries a "this is still mine" quality that the preterite has shed.

Esta mañana he hablado con el médico y me ha dicho que estoy bien.

This morning I spoke to the doctor and he told me I'm fine.

El lunes hablé con el médico y me dijo que estaba bien.

On Monday I spoke to the doctor and he told me I was fine.

The information is similar, but the first sentence is fresh news the speaker has just received; the second is a finished narrative the speaker is recounting.

Quick decision flowchart

When you're about to choose a past tense, run through this in order:

  1. Is there a time expression in the sentence? If yes, check it against the two lists above. Trigger from list A → perfect. Trigger from list B → preterite.
  2. If there is no time expression, ask: is the event still current or relevant? Recent news, today's events, life experiences → perfect. Distant or narrated → preterite.
  3. If both feel possible, default to the perfect in peninsular Spanish. You will sound native more often than not.

Common Mistakes

❌ Hoy comí en el restaurante nuevo.

Non-peninsular — hoy forces the perfect in Spain

✅ Hoy he comido en el restaurante nuevo.

I ate at the new restaurant today.

The defining peninsular error. Hoy + preterite sounds Latin-American or foreign in Spain.

❌ La semana pasada hemos visto a Marta dos veces.

Wrong tense — la semana pasada is closed time, takes the preterite

✅ La semana pasada vimos a Marta dos veces.

We saw Marta twice last week.

The closed-frame markers (pasado / pasada) override the perfect. Don't be tempted by the twice — it doesn't keep the frame open.

❌ He visto a Pablo ayer en el metro.

Wrong tense — ayer is closed, takes the preterite

✅ Vi a Pablo ayer en el metro.

I saw Pablo on the metro yesterday.

If ayer is in the sentence, the verb must be in the preterite. Mixing he visto with ayer is the most jarring of all errors for a peninsular ear.

❌ En 2015 he vivido en Berlín dos años.

Wrong tense — en 2015 is a closed date, takes the preterite

✅ En 2015 viví en Berlín dos años.

In 2015 I lived in Berlin for two years.

Any en + year phrase fixes the event in a closed past frame, regardless of how long ago the year was.

❌ ¿Hablaste con ella esta mañana?

Non-peninsular — esta mañana is inside today, takes the perfect

✅ ¿Has hablado con ella esta mañana?

Did you speak to her this morning?

A peninsular speaker would always ask ¿Has hablado? about something earlier today. ¿Hablaste? shifts the frame outside today and feels off.

Key takeaways

  • Open frame (today / this week / experiential) → present perfect. Closed frame (yesterday / last week / dated) → preterite. That is the whole decision rule.
  • The trigger word in the sentence usually picks the tense for you. Hoy / esta semana / nunca / alguna vez → perfect. Ayer / la semana pasada / en 2010 / anoche → preterite.
  • When in doubt with a today-event, default to the perfect.
  • The Latin-American instinct (today = preterite) must be retrained for peninsular Spanish — see verbs/present-perfect/peninsular-hodiernal-use for the deep dive.
  • The narrow zone where both are possible (Sunday-night esta semana, distant narrative framing) is stylistic, not arbitrary — the speaker is choosing whether to close the frame.

Now practice Spanish

Reading grammar gets you part of the way. The exercises are where it sticks — free, no signup needed.

Start learning Spanish

Related Topics

  • Usos generales del pretérito perfectoA2The four main jobs of the Spanish present perfect — today's events, life experiences, recent unspecified past, and ongoing situations with ya/todavía/nunca — and why peninsular Spanish leans on this tense far more than English or Latin-American Spanish.
  • Pretérito perfecto hodiernal en EspañaA2Why peninsular Spanish forces the present perfect (he comido) for any event that happened today — and often this week, this month, or this year — where Latin America would use the simple preterite.
  • Cómo elegir entre pretérito y pretérito perfectoA2Peninsular Spanish's defining past-tense choice. He comido for actions inside the current time frame (hoy, esta semana, este año, en mi vida); comí for actions outside it (ayer, la semana pasada, hace dos años). Time markers do most of the work. Plus the peninsular vs Latin American contrast and the northern Spain counter-trap.
  • Pretérito con expresiones temporalesA2The time expressions that trigger the preterite in peninsular Spanish — ayer, anoche, hace dos años, en 2010, durante tres horas — and the equally important set that triggers the present perfect instead in Spain.