I think a little bit of cheese was eaten by some...
This OL was playing very effectively in the 1st two games but looked at objectively, we have a rookie at LT, a project at RT, 2 middling guards and an all-pro calibre center. And in a new, albeit OL friendly offense. This group was always going to have some ups and downs because this isn't an established group of vets who have been playing to a high standard week in and week out. This isn't a top 3 or top 5 OL group, despite playing very well early. They can be effective as we've seen but to expect them to maul every team, every game no matter what is too much.
Take our one all-pro out of that group against a team geared up, correctly, to stop the run and we will struggle a bit.
And when the run game isn't particularly clicking (3.2 ypc), the passing game has to be very efficient. As you suggest, we're missing a third consistent receiving/ TE threat - but that isn't really news revealed by this game. However, putting that to the side, Shaheed 5 targets and 0 catches. That's not passing efficiency and if we connect on a couple of those, the game likely is different. I don't think the pressure was so high that we couldn't have performed better in the passing game but certainly there was more pressure than in the first two games. Because the game was close and we continued to run, we weren't in proper catch up mode. But running inefficiency meant we faced a lot more 3rd and long than we had previously. But still, 56% completion rate is sub-par, as is 5.7 ypa (which is a function of that).
With hindsight and with a patched up OL and no Taysom, we probably should have taken the FG instead of going for it on 4th and 1 but we are trying to be aggressive - sometimes that pays off, and sometimes it doesn't.
This was tight game and exactly the kind of game we needed to win, and that to me is the most unfortunate part of this.