Portuguese vs Spanish Present Perfect

If you already speak Spanish, nothing about Portuguese grammar is more dangerous than the compound past. Spanish he comido and Portuguese tenho comido look like siblings -- same auxiliary logic, same past participle, same word order. They are not siblings. They are false friends of the worst kind, because the form that Spanish speakers reach for instinctively produces sentences that either mean something completely different in Portuguese or are outright ungrammatical. This page is a head-on collision with that problem, and an attempt to rewire the Spanish instinct before it strands you mid-sentence at a cafe in Lisbon.

The bottom line, said twice

Spanish he comido covers a wide range: a single past event with current relevance, a life experience, a recent completion, or an ongoing state. In most of Spain it is even used for events earlier today (hoy he desayunado temprano). Portuguese tenho comido does none of those things. It means, and only means, that the eating has been happening repeatedly or continuously over a recent stretch of time, and is expected to keep happening. A Portuguese speaker hearing tenho comido does not picture one meal -- they picture several meals, a pattern, a habit that stretches from some point in the recent past up to the moment of speaking.

Tenho comido muito mal ultimamente.

I have been eating really badly lately (over the last days/weeks, and still am).

He comido muy mal últimamente.

Spanish -- same basic meaning here; one of the few cases where the forms genuinely overlap.

The overlap in that pair is exactly the trap: once Spanish speakers hear that tenho comido can mean "I have been eating badly lately," they assume the rest of the Spanish present perfect maps over too. It does not.

What Spanish uses the perfect for -- and what Portuguese uses instead

Spanish uses he + participio for at least four distinct meanings. European Portuguese handles each of those meanings with a different tense. Map them one by one.

1. "I've already eaten" (recent completion)

In Spain, ya he comido is the natural way to say "I've already eaten" -- a single, completed, recent event. In Portugal, this is where Spanish speakers crash first. Portuguese uses the simple preterite, not the compound tense.

Já comi, obrigado.

I've already eaten, thanks.

Ya he comido, gracias.

Spanish equivalent -- note the compound form, which does NOT translate directly.

❌ Já tenho comido, obrigado.

Incorrect -- this would mean 'I have been eating (repeatedly) already,' which makes no sense here.

2. "I have lived in Lisbon since 2010" (ongoing state)

Spanish uses the present perfect for states that began in the past and continue into the present: he vivido en Lisboa desde 2010. Portuguese uses the present indicative for this -- because the state is still ongoing, the verb stays in the present.

Vivo em Lisboa desde 2010.

I have lived in Lisbon since 2010 (and still do).

Estudo português há três anos.

I have been studying Portuguese for three years (and still am).

❌ Tenho vivido em Lisboa desde 2010.

Incorrect -- this would imply an iterative or temporary pattern of living there, not continuous residence.

💡
The pattern há + time period plus a present-tense verb is the standard way to say "for X time up to now" in European Portuguese. Estudo há três anos means "I have been studying for three years." Never combine há + time with the pretérito perfeito composto.

3. "I have visited Paris" (life experience)

Spanish he visitado París is a classic life-experience use of the perfect. Portuguese uses the simple preterite here too, usually with ("already") to signal the experiential flavor.

Já estive em Paris duas vezes.

I have been to Paris twice.

Nunca comi sushi.

I have never eaten sushi.

❌ Tenho estado em Paris duas vezes.

Incorrect -- finite count of experiences cannot take the composto.

4. "I have been working a lot" (iterative / ongoing)

This is the one case where Spanish and Portuguese agree. When Spanish uses the perfect to mean something repeated or ongoing over a recent window -- often expressible as "I have been -ing" in English -- Portuguese happily uses tenho + participio.

Tenho trabalhado muito.

I have been working a lot (lately).

He trabajado mucho últimamente.

Spanish -- matches the Portuguese here.

The problem is that Spanish he trabajado mucho is ambiguous out of context: it could mean a single stretch ("I worked a lot today") or an iterative pattern ("I have been working a lot lately"). Portuguese tenho trabalhado muito can only mean the second.

Side-by-side translation table

Ten parallel sentences, Spanish on one side, European Portuguese on the other, with the English. Reading down the table is the fastest way to internalize the gap.

EnglishSpanishEuropean Portuguese
I've already eaten.Ya he comido.Já comi.
I have been eating badly lately.He comido muy mal últimamente.Tenho comido muito mal ultimamente.
I have visited Paris.He visitado París.Já estive em Paris. / Já visitei Paris.
I have lived in Lisbon since 2010.He vivido en Lisboa desde 2010.Vivo em Lisboa desde 2010.
I have been studying Portuguese for three years.He estudiado portugués durante tres años. / Llevo tres años estudiando.Estudo português há três anos.
Have you seen that film?¿Has visto esa película?Já viste esse filme?
It has rained a lot this week.Ha llovido mucho esta semana.Tem chovido muito esta semana.
I have never been there.Nunca he estado allí.Nunca lá estive.
This morning I've had coffee.Esta mañana he tomado café.Esta manhã tomei café.
I've been feeling tired.He estado cansado.Tenho andado cansado. / Tenho estado cansado.

Notice the pattern. Whenever the event is a single completion or a life experience, Portuguese jumps to the simple preterite. Whenever it is a continuous state starting at a past point, Portuguese jumps to the present tense with desde or . Only when the meaning is genuinely iterative or "has been -ing" does the composto appear.

Why the two languages diverged

Both Portuguese and Spanish inherited the habeō + participle construction from Vulgar Latin. At one point they meant roughly the same thing. Then history pulled them apart.

Spanish, over several centuries, expanded the scope of its perfect to cover recent past events and life experiences -- especially in peninsular Spanish. In much of Spain today, he comido is practically a past tense for anything that happened within the same day or within the speaker's still-relevant lifetime.

European Portuguese did something different. The simple preterite, pretérito perfeito simples, held firm and took over almost all uses of "have done" -- recent events, life experiences, completions. What was left for the compound form was a narrow, specialized meaning: iterative or continuous action spanning a recent period up to now. The composto became, in effect, the Portuguese way to say "has been -ing" rather than "has done."

The result is that Portuguese tenho falado is semantically closer to English I have been speaking than to English I have spoken. And Spanish he hablado covers a completely different slice of time than its Portuguese look-alike.

💡
A useful heuristic for ex-Spanish-speakers: whenever you would say he hecho algo in Spanish for a single event, in Portugal you almost certainly want fiz (simple preterite). Reserve tenho feito for situations where you could legitimately say "have been doing" in English.

Four critical contrast pairs, explained

These are the cases where Spanish intuition fails hardest. Memorize them, and the rest falls into place.

Pair 1: "Already"

✅ Já cheguei.

I have arrived (already).

❌ Já tenho chegado.

Incorrect. *Já + simple preterite* for a single completion.

In Spanish, ya he llegado is fine. In Portuguese, já tenho chegado would imply repeated arrivings, which rarely makes sense.

Pair 2: "Since X"

✅ Trabalho aqui desde 2018.

I have worked here since 2018.

❌ Tenho trabalhado aqui desde 2018.

Incorrect for ongoing employment. This would suggest a recent pattern of working here, not a continuous seven-year span.

Spanish happily says he trabajado aquí desde 2018. Portuguese uses the present indicative for the same idea.

Pair 3: "Today"

✅ Hoje comi muito.

Today I ate a lot.

❌ Hoje tenho comido muito.

Incorrect for a single day. Peninsular Spanish *hoy he comido mucho* does not translate with the composto.

A single bounded day -- even today -- is the domain of the preterite in Portugal.

Pair 4: "Ever / Never"

✅ Alguma vez foste ao Brasil?

Have you ever been to Brazil?

❌ Alguma vez tens ido ao Brasil?

Incorrect. Experience questions take the simple preterite.

Spanish ¿alguna vez has estado en Brasil? uses the perfect; Portuguese uses foste, the simple preterite.

Quick decision guide for Spanish speakers

Before you open your mouth in Portugal, run the sentence through this three-question filter:

  1. Is the event a single completion or a finite count of experiences? → Simple preterite. Comi. Já vi. Estive.
  2. Is it a state that started in the past and still continues? → Present indicative with desde or . Vivo aqui desde 2010.
  3. Is it something that has been happening repeatedly or continuously over a recent period? → Composto. Tenho trabalhado muito.

If you find yourself about to say tenho + participle, double-check that question 3 applies. If questions 1 or 2 apply instead, your Spanish instinct has just tried to betray you.

💡
Spanish speakers tend to vastly overuse the composto in their first months in Portugal. If you suspect you are reaching for it more than once every few sentences, you are almost certainly overusing it. The composto is a rare, specialized tense in spoken Portuguese -- the simple preterite does most of the work.

Common Mistakes

❌ Esta manhã tenho bebido café.

Incorrect -- *esta manhã* is a bounded past window.

✅ Esta manhã bebi café.

This morning I had coffee.

❌ Tenho morado em Lisboa desde 2015.

Incorrect -- continuous residence takes the present tense with *desde*.

✅ Moro em Lisboa desde 2015.

I have lived in Lisbon since 2015.

❌ Já tenho visto esse filme três vezes.

Incorrect -- a finite count of experiences does not take the composto.

✅ Já vi esse filme três vezes.

I have seen that film three times.

❌ Hoje tenho tido muito trabalho.

Incorrect -- *hoje* bounds the time to today, not a recent iterative window.

✅ Hoje tive muito trabalho.

I had a lot of work today.

❌ Nunca tenho estado em Berlim.

Incorrect -- *nunca* plus life experience takes the simple preterite in Portugal.

✅ Nunca estive em Berlim.

I have never been to Berlin.

Key Takeaways

  • Spanish he comido and Portuguese tenho comido are false friends. The forms match; the meanings do not.
  • European Portuguese uses the simple preterite (comi, fui, vi) for almost everything Spanish covers with the compound perfect.
  • For ongoing states starting in the past (since X, for X time), use the present indicative with desde or -- never the composto.
  • The composto is reserved for iterative or continuous action over a recent period still open to the present -- the English "has been -ing" meaning.
  • Spanish speakers typically over-apply the composto; the cure is to default to the preterite and only promote to the composto when the iterative meaning is genuinely there.

For the positive side of this coin -- what the composto actually does -- head to Repeated or Ongoing Actions Up to Now. For the full catalogue of missteps, see Common Mistakes with the Perfeito Composto.

Related Topics