Is there any way to buy bitcoins online without a fee? I'm new to bitcoins, and my experience is from something like E*Trade buying on the NASDAQ, so that's my frame of reference. I paid a small broker fee for every buy or sell, and I trusted the exchange and the software 100%.

But I thought the big advantage of bitcoin was no middle man. Hence I assumed no fees. 

But perhaps contrary to that first assumption, in my second assumption I thought there would be this big trusted website where you go and buy / sell anonymously without having to trust the other party. You would just need to trust the exchange itself.

Can I buy bitcoins anywhere without a fee?

Can I buy bitcoins anywhere with 0 risk of getting ripped off, as in a flea market?

Can I get both positive things in one place (ideal)?

Thanks.

EDIT

Coinbase Pro allows me to do limit buys for free. The trick there is to set the limit price to the current price and keep changing the price if necessary to get the desired quantity purchased.

Coinbase had been charging me 1% on large buys. So for small buys ok; large buys, it adds up!

CEX.IO on the other hand, gave me large limits and they charge a flat fee of $10. So for a buy of $3000 this is only .33 percent; much better!

Also, something I need to watch out for is the buy price. The exchanges mess with that to make extra margin I think. So I need to shop for best price before committing to buy. Compare the total price including fee based on buy price.
Of course you may trade bitcoins with just anyone without having to pay fees to a centralized exchange.

I think Bisq (formerly BitSquare) may be the best answer to the question; decentralized, free for some definitions of "free", and very low risk due to the escrow system - but not completely without fees, indeed as of 2017 one may end up paying quite much higher fees on Bisq than on some of the centralized exchanges.  Well, let's walk through this ...

Fees and costs

You probably won't get away completely without fees:


There is the bitcoin transaction fee, a fee for getting the transaction included in the network.  Basically, you can't withdraw your funds from the exchange or move it from one wallet to another without paying a network fee (though internal transfers i.e. on an exchange may be for free).  As of 2017 it has become significant (i.e. 0.001 BTC, but can vary a lot), though not that bad if you want to turn over significant amounts of money (i.e. 1 BTC).  According to the protocol the fee is not mandatory, but a regular transaction without a fee paid is very unlikely to be included in the blockchain.
With many exchanges, one pays the exchange a withdrawal fee instead of paying the network fee.  The withdrawal fee is usually constant, and usually higher than the average network fee paid by the exchange.
Fees to the exchange ... any commercial centralized market place do eventually have costs and hopes to get investments recovered; I would be vary of a site claiming to be for free - though, some exchanges takes in most of the profits on margin traders.  Sometimes market makers pays less fee than market takers - sometimes it's opposite (on Localbitcoins market makers pay the full fee).
Arbitrator fee - on peer-to-peer-platforms (Bisq) where arbitration may be needed, one may have to pay a fee for that.
Spread - on any exchange there will be a difference between the bid and the offer.  If you need to buy bitcoins instantly, you will have to cover the spread.  If you have the time, then place a bid/offer just marginally better than the competition and wait for the other party to take your offer and cover the spread.  On the exchanges with highest volume, the spread will anyway be insignificant compared to the volatility.
Banking fees, for converting fiat to/from exchanges and/or other peers selling bitcoins.
Currency converting costs.  YMMV, but for me this is a relatively significant and a somewhat hidden cost of sending fiat to an exchange.  The exchange typically don't do trades in my local currency, and my bank gives me a pretty bad exchange rate when I send money to the exchange.
Even meeting up with other people to trade cash may be costly wrg of transportation costs and time taken.
Time is money - spend hours searching for the cheapest offers, and how many dimes did you save on it? (And how much did the bitcoin market value rise while you were searching for it?)


Risks

No method are without risks.


Bankruptcy - as for the centralized exchanges this is probably the biggest risk - one day you send money to the exchange, the next day the exchange is gone.  It does happen from time to time.
Funds on a centralized exchange being frozen for other reasons.  Your funds may be frozen for a variety of reasons - it does happen from time to time.
Bitcoin transactions getting stuck.  Not so much an issue when transferring from the bigger exchanges, but due to the block size issue a transaction may stay pending for arbitrary long if it appears the transaction fee was too low.  I have personally experienced twice that a transaction from an honest seller using "wrong" wallet software was timing out after 72 hours.  This became less of an issue in late 2017, as the default timeout has been increased to two weeks and because there is more often periods with idle capacity in the blockchain.
Money lost or stalled due to other technical issues - seldom an issue, but if using a "shitty" exchange it may happen.
Simple scams (mostly an issue if buying or selling bitcoins to random strangers without a proper escrow system in place).  Some payment methods are also reversible (particularly credit card payments and paypal payments) or easy to fraud.
Fake exchange scams (mostly an issue when selling btc); there exists several sites looking like legit exchanges, except they will just eat up your bitcoin if you transfer btc there.  It has also happened that an attacker has managed to highjack the DNS entry and get a valid SSL certificate for the exchange (openledger.info).
Money laundring; lots of the money in circulation comes from criminal sources, and you may become suspected of money laundry.  This may cause your funds to get frozen on centralized exchanges.  This may cause troubles with law enforcement if trading peer-to-peer.  Laws may vary between different jurisdictions, unless it ought to be obvious that the money comes from criminal sources you generally should be on the right side of the law, but having to spend time answering questions from the police is still within my definition of "trouble".  Some banks may even decide to freeze your account just because you're sending money to the exchanges.
Third party scams; mostly an issue when selling bitcoins (anonymous money) for bank deposits (trackable money), not so much when buying bitcoins - a fraudster tricks a victim (or gains unauthorized access to the bank) into sending money to the bitcoin seller, and tricks the bitcoin seller into sending bitcoins to the fraudster.  The victim gets angry with the bitcoin seller i.e. because he's expecting the bitcoin seller to send him an iPhone.
Outright robbery - may be a risk if doing cash trades (I've encountered some attempts on robbery myself when doing cash trades), especially when appointing meetings with random strangers in dark alleys, or if counting bigger amounts of cash on a public place with the wrong person watching.  If you expose that you have a lot of bitcoins i.e. through Localbitcoins and your identity and address can be found out, you may also receive threats ("pay one bitcoin to address 1... or else something bad may happen to your family" - I've experienced that, too).
Software bugs and malicious software; can you trust the wallet software, etc?  How to tell that i.e. Bisq does it's job, without any severe bugs causing bitcoins to be lost?


Other answers here are focusing on the best or cheapest exchanges.  I'll skip that and try to make an overview of alternative market places:

Bisq (formerly Bitsquare)

Bitsquare is a free and decentralized market place, it comes with a good escrow protection.  It does have some drawbacks though:


I managed to buy bitcoins through a "same bank"-offer, using my local domestic bank account.  However, I did need to know the SWIFT-code for my bank, and I did need to know how to convert an IBAN to a local account number.  YMMV, but I think this is a bit too difficult for quite a lot of people wanting to buy bitcoins.
It's an application, not a web site - meaning you need to install special software to access it.  Also, it's a graphical monolithic application that is supposed to be running 24/7, difficult to use on/from laptops and mobile devices.
You can't buy bitcoins without already owning bitcoins - you will need to seed the application wallet with enough bitcoins to cover transaction fees and escrow deposit
As far as I can see, there is no way to do free-text communication with the seller there.
There is a max limit for how much can be transferred in a single trade
Beware of the potential chain split in November - the maintainer has promised to follow the 1X-chain, so if SegWit2X should be successful, one may end up at the wrong side of a chain split.


Bisq supports bank payments (including local currencies and local banks) and convertions to/from altcoins, as far as I can see cash is not an option there.

You will eventually need to cover banking fees, and the bitcoin transaction fees will be higher than normal due to the complexity of the escrow transactions.

(Note: the author haven't tried Bisq for quite some time, the information above may be out-of-date).

IRC

The IRC channel #bitcoin-otc on freenode is also place where it's possible to trade coins with no middleman taking commissions.  I've never tried it though.

Mycellium

The mycellium wallet (android) has a cash-transaction built-in marketplace which is (as for now) without any fees - but if it ever becomes popular, the Mycellium team may decide to slap a fee on it.  During the last year, I've gotten close to 0 trades through the Mycellium platform, so I've given it up.

LocalBitcoins

With a 1% fee (paid by the advertiser), LocalBitcoins.Com (LBC) is an unlikely candidate on this list - but still, the fee is not mandatory to pay, one can "sneak" away from it, without violating the ToS.

If you search for offers on LBC, you will most likely find that there is a relatively big gap between the offers and bids.  If you don't need to buy bitcoins immediately, you can "turn the table" and put out your own "i buy bitcoin"-ad.

Telegram

On the telegram chat service there is a bot BTC_CHANGE_BOT.  I haven't tested it though, don't even know if it has fee structures.