The biggest reason is that they weren't prepared for an attack.
The Lannister army wasn't supposed to be there, but rather defending King's Landing and Casterly Rock.
Lady Tyrell even goes on to say that fighting was never really the Tyrell's strong suit, so in-universe it wasn't a surprise that they fell so quickly.
Also, wealth doesn't equate to army size.
Just because the Tyrell's have a lot of money doesn't mean that they have a huge army.
In fact, house Lannister is in significant debt because of it's huge army and all of the fighting they've had to do over the last few years.
movies.stackexchange.com/users/52/DForck42
Adding to @DForck42's answer, not only the Tyrells were unprepared, as Lady Olenna points out, they were never very good at the art of war.
They lack good commanders; Ser Randyll Tarly, the most competent of their banner-men, sided with Jaime, providing the Lannisters with men, as well with expertise and knowledge on how best to defeat the Tyrells.
movies.stackexchange.com/users/29201/RMalke
Possibly Inside Help Considering that High Garden is a castle, and High Garden was at least prepared enough that Lady Olenna watches them approach (without siege equipment)
so we can surmise that the gate would be closed.
I would posulate that either the Lannisters had someone on the inside to open the gate for them, or the directors and writers forgot that sieges take years and many, many
, lives even of poorly fortified castles.
movies.stackexchange.com/users/55508/theinvisibleduck
The way that I remember this happening is that this house was one of the two that went to Daenerys and offered support.
She then had them send their army to King's Landing to lay siege.
While their army was doing that, it wasn't at home, defending their castle.
Meanwhile, they thought that the Lannister army was in Casterly Rock waiting for the Unsullied and the Dothraki.
But instead, it was taking Highgarden.
And they sent at least Jaime from King's Landing, as they relied on Euron Greyjoy to protect King's Landing by sinking the attacking fleet.
I remain unclear on whether the Tyrell army was with the fleet or not.
Maybe it's hanging out laying siege to King's Landing.
Or maybe they're dead and on the bottom of the ocean.
movies.stackexchange.com/users/18476/Brythan
All of the in-universe reasons have been given so here are some out-of-universe reasons to consider.
Story:
Dani's Dothraki + Unsullied + Dorne + Reach +
Yara-Theon Ironborn fleet should have steamrolled the Lannisters and Dani should be sat the Iron Throne.
However, this would be rather linear and dull plot
so D&D had to do something to even up the odds between Cersi and Dani.
While the trap at Casterly Rock was no big surprise, the taking of Highgarden was.
Budget:
A one sided slaughter is a bit boring.
Having this off screen is a big money saver and can pay for more dragon CGI and Ice Zombie battles!
Time:
With only this 7 eps season and one more season the story needs to be moved on.
2nd tier characters such as Olena, Elaria and the Sand Snakes need to be culled in order to make room for Jon, Dani, Arya and Sam plots.
movies.stackexchange.com/users/44327/josh
Since it's fiction, I guess it's because HBO wanted to even the odds for House Lannister.
The biggest reason why House Tyrell lost is because the Lannisters somehow magically acquired all troop movements of Daenerys's forces but masked their own.
I mean communication via ravens in GOT is pretty fast
and I doubt Lannisters could invade Tyrell without hitting any spies or picket forces.
And magically ambushing the fleet?
Really?
Did they have aerial reconnaissance in middle ages?
With Varys and Olenna, the Targaryen forces should have equal if not better intelligence network.
So no, I don't think it was possible for things to happen this way other than
author wanted it this way or the allies brushed aside all intelligence and said: they love Casterly Rock, no way they are going to take High Gardens.
movies.stackexchange.com/users/55580/legokangpalla
In Game of Thrones season 7 episode 3, we see    the Lannister army   invade and defeat    house Tyrell in Highgarden.    In fact, the fight is so one-sided that the writers of the show intentionally decided not to show the actual battle and instead jumped directly to the aftermath of fight.  It's established in season 7 episode 1 that     the Lannister army   is running short of supplies and money, and     house Tyrell   is now the richest house in Westeros. How was it possible that the former so easily defeated the latter?
How was a powerful house so easily defeated?
movies.stackexchange.com
<game-of-thrones>
movies.stackexchange.com/questions/78195
movies.stackexchange.com/users/45319/Tiny Rick
 The biggest reason is that the Tyrell weren't prepared for an attack. The Lannister army wasn't supposed to be there, but rather defending King's Landing and Casterly Rock.  Lady Tyrell even goes on to say that fighting was never really the Tyrell's strong suit, so in-universe it wasn't a surprise that they fell so quickly. Just because the Tyrell's have a lot of money doesn't mean that they have a huge army. In fact, house Lannister is in significant debt because of it's huge army and all of the fighting they've had to do over the last few years. House Lannister was not prepared for an attack.
House Lannister was not prepared for an attack. House Lannister is in significant debt because of it's huge army and all of the fighting they've had to do over the last few years. In-universe, fighting was never really the Tyrell's strong suit, so it wasn't a surprise that they fell so quickly.