Matchen såg ut att sluta 1-1 när nyss inbytte Adnan Januzaj spelade in bollen i djupet till Portu som tog emot med en touch och sedan lyfte bollen över målvakten Rui Silva och satte 2-1 i den 89:e minuten.
Portu hade även gett Sociedad ledningen i mitten av den första halvleken.
Alexander Isak byttes in i mitten av den andra havleken. Han hade en boll i stolpen strax före segermålet men situationen var avblåst för ruff i en tidigare sitution.
La Liga

Granada CF
1 - 2

Real Sociedad
Tabelltoppen:
1 Barcelona 11 7 1 3 29-14 22
2 Real Madrid 11 6 4 1 21-9 22
3 Sociedad 12 7 1 4 20-13 22
Barcelona och Real Madrid har en match mindre spelad än övriga lag beroende på att El Clasico blev uppskjutet på grund av politiska oroligheter i Katalonien för ett par veckor sedan.