Grammarians believe that we shouldn't use present perfect with combinations like "two hours ago, three years ago, etc".
You may have one or two grammarians in mind, but you shouldn't generalize to all grammarians. It simply isn't true that all grammarians "believe that we shouldn't use [the] present perfect with combinations like 'two hours ago,['] three years ago,['] etc."
Do you think the following sentence is wrong?
- I haven't seen Ali since two minutes ago.
No, I don't think it is wrong, and, what's more, it isn't wrong. It is a bit clumsy, though. Why not simply say:
- I last saw Ali two minutes ago.
- The last time I saw Ali was two minutes ago.
- I haven't seen Ali in the last two minutes.
The type of construction that you imagine, incorrectly, that all grammarians object to tends to be used when the speaker needs to finish his sentence and doesn't have (or doesn't wish to take the) time to calculate:
- I haven't seen that movie since five years ago, when we were last here.
- I haven't seen that movie since we were last here, five years ago.
In such sentences, the "ago" time period is what matters most to the speaker. In the example I just gave "five years ago" stands as a placeholder phrase for a particular time, which I have also specified with the clause "we were last here."
You might ask, why not just use the second sentence or omit the phrase "five years ago" from the first ("I haven't seen that movie since we were last here")? Well, those are viable options. In a particular speaking context, however, one might still wish to say, "I haven't seen that movie since five years ago," especially if the persons with whom one is speaking already understand that "five years ago" refers to the last time the speaker was at a particular place.