We try to go once a year, especially in the Texas summer when we have to pack light sweaters. Don't let the "it's overrun with gringos" talk bother you. Yes, there is an expat crowd, but SMA is still very much Mexico and Mexican and it's fantastic. It's more overrun by pinche Chilangos.
Our favorites that we go back to regularly, are Atrio (prefer it to Quince for spectacular rooftop meal in the shadow of the Parroquia), the Restaurant, and Antonia. We sometimes break things up with a steak meal at Tio Lucas, especially when there is live music. Bovine was the new place we tried this last trip and it was excellent. El Pegaso is still great for straight up Mexican food. And, no trip for us is complete without a torta at Torta Mundo (milanesa de res o de pollo), a hole in the wall on Umaran down from the Jardin. A fun, guilty pleasure: the churros at the bar at Casa Sierra Nevada. The street food is cool, but you won't be disappointed by this upscale version. And, Luna at the Rosemont is good when we are there with people who are in SMA for the first time. The view is awesome and the upscale lunch is great.
This looks like a good list for a bunch of newish, foody places: https://www.timeout.com/mexico-city/restaurants/best-restaurants-and-bars-in-san-miguel-de-allende
For non-food, get to the Fabrica La Aurora for sure. You can spend a good bit of time there looking at and buying art and other design products.