Regarding “hard” science fiction from the past 25 years, I’ve thoroughly enjoyed Stephen Baxter.
I read the first two books (Voyager and Titan) from his NASA trilogy [1]. These books are set in a near future or alternative time-line and cover inter-planetary journeys (Mars and Titan), involving the use NASA technology. Both books seem very well-researched and true-to-life.
Another book I really enjoyed was Coalescent [2]. It’s a blend of historical and science fiction: the historical part tallies with my own understanding of the late Roman Empire in Western Europe while the science part is more speculative – a human society that gradually evolves to become eusocial.
On a very different scale is, Space [3] which explores the Fermi paradox, communication between different sentient species, and the long-term survival prospects for civilisations of sentient species. Unlike the other books which have more straight-forward scientific concepts, I found some of the ideas in this book to be mind-expanding and really pushed my imagination to its limits.
From a story-telling perspective, his books are well-plotted with well-drawn, compelling characters (you really empathise with the protagonists and want to find out what happens next). I learned about a lot of diverse topics, e.g., the theories of Giordano Bruno, history of NASA projects (e.g., NERVA), the tyranny of the rocket equation, explanations of the slingshot effect, the economics of the Roman Empire, eusocial organisation and behaviour, lunar geology, Titanic meteorology, how humans could survive in a micro-gravity environment (and space in general), consequences of gamma-ray bursts, and much more.
Looking at Baxter’s Wikipedia page[3], I can see that I’ve only scratched the surface as he’s written many more books. Unfortunately, over the past decade, I’ve got out of the habit of reading novels but I really should make more of an effort.
[1] https://en.wikipedia.org/wiki/NASA_Trilogy
[2] https://en.wikipedia.org/wiki/Coalescent
[3] https://en.wikipedia.org/wiki/Manifold:_Space