This has been discussed before but I am facing the same issue where I would like to create smart lists of contacts associated with opportunities that have specific opp line items.
The feedback that has been given in the past is to flatten the relationship between the products and the opp by creating a field on the opp to reference the products. For multiple reasons, I feel like this solution is not scalable or appropriate.
What if the opp has multiple products, how would one target a singular product? Putting products into an open text field in SFDC and targeting using a "contains" filter in Marketo seems like an inaccurate solution.
Has anyone solved this issue without creating another field on the opp?
Full disclosure -- I've never done this, but knowing what I know about Marketo and SFDC, would your SFDC Admin be able to create a field on the opportunity object that for the SFDC user is a multiple picklist (i.e. checkboxes in a picklist), which then gets stored as a concatenated field separated by semi colons? That avoids the issue you're describing of just an open text field by using predetermined values, you CAN use your "contains" filter in Marketo since you are guaranteeing consistency in the phrasing/spelling of product names, and it's manageable long term as product lines change and the SFDC admins just update the picklist items.
We use similar approaches (not on the opportunity object) for similar scenarios and I'd bet this is an option. Might require some SFDC dev work to get the UI selection of product names easy for users, but the storage of the data becomes that concatenated field.
Just an idea!