Real Sociedad scored in stoppage time at the end of the both halves to claim a 3-1 win in a feisty Primera Division game at Sporting Gijon.
Gregory put the hosts ahead after three minutes, but Xabi Prieto levelled and David Zurutuza struck moments before half-time.
After the break, the bookings stacked up - there were 11 in all, including seven for the hosts - but the only other goal went to Sociedad as Mikel Aranburu added a third in the 93rd minute.
Gregory opened the scoring in just the third minute as he met Miguel's corner in the six-yard box and headed past Claudio Bravo.
Sociedad went for an equaliser, with Juan Pablo holding on to Alberto de la Bella's 25-yard effort.
And they did not have to wait long to pull level as Joseba Llorente played in Prieto to finish from 18 yards.
Eight minutes later Antoine Griezmann should have put the visitors ahead but his close-range header from Prieto's cross was held by Juan Pablo.
At the other end, Bravo stopped a Mate Bilic strike from the edge of the box, then watched as Gaston Sangoy's free-kick sailed out of play.
But it was the visitors who snatched the lead with the half-time whistles just seconds away as Zurutuza finished from 12 yards.
The bookings started to mount for a frustrated Sporting after the break as Sociedad went close to another, Jon Ansotegui heading Alberto Lora's free-kick wide.
David Barral headed into the hands of Bravo after 64 minutes and when Lora saw yellow shortly after for a foul on Griezmann, he was the seventh Sporting player to go in the book.
But the hosts continued to press and it needed a fantastic save from Bravo to deny Barral when he headed Jose Angel's free-kick goalwards from close range.
It was Sociedad who found the net, though, Aranburu converting Prieto's cross late on.